第一讲:c/c++基本字符数字输入printf(),scanf_s(),gets_s(),getchar()

本文的编写是为了在学习c++的时候加深自己的记忆,同时也为与我一般的初学者提供一些参考,此处特别感谢微信公众号“c/c++的编程教室”,我的学习过程按照公众号的推送进行学习的!

1.从输入hello world开始进行实验,printf()格式化输出函数

(1)直接采用printf()显示字符串

#include<stdio.h>//用于标准输入输出的头文件
void main()
{
printf("hello world\n");
getchar();//暂停屏幕
}

(2)加入show函数

#include<stdio.h>
void show();//show()函数声明
void main()
{
show();
getchar();
}
void show()
{
printf("hello world\n");
}

(3)赋值给char 变量,以字符串的形式输出

#include<stdio.h>
void main()
{
char  world[] = "hello world";//char 型数组,长度由初始默认
printf("%s\n", world);
getchar();
}

此处有必要讲一下printf()的控制字符

%s   字符串

%c   单个字符

%d(%i)   有符号的十进制整数

%u   无符号的十进制整数

%o   无符号八进制整数

%x(%X)   无符号十六进制整数

%f    浮点数,十进制计数法

%a (%A)  浮点数,16进制数字和p-P-计数法

%e(%E)    浮点数,e-E-计数法

%g(%G)   根据数值不同自动选择

%p   指针

此处既然讲到了显示控制字符,便讲一下显示精度与左右对齐

#include<stdio.h>
void main()
{
char  world[] = "hello world";//char 型数组,长度由初始默认
printf("#%20.4s#\n", world);//20是只显示长度,此处显示占20个字符的长度。4是显示精度,此处只显示4个字符
printf("#%20.12s#\n", world);//默认左对齐
printf("#%-20.12s#\n", world);//-表示右对齐
getchar();

}


关于数字的显示,此处做一些说明

位(bit)与字节(Byte)的转换:1Byte=8bit

%.el   期望输出是double类型,占8个字节

%d   期望输出为int型,占4个字节

%ld   期望输出为long型,占4个字节

%lld   期望输出为long long 型,占8个字节


查看各种输出类型的最大值可通过limit这个库函数,包含在头文件#include<limit.h>里面

#include<stdio.h>
#include<limits.h>//查看数值类型的最大值
int main()
{
printf("int类型的最大值:%ld.\n", INT_MAX);
printf("long类型的最大值:%ld.\n",LONG_MAX);
getchar();
return 0;
}


2.从键盘读入字符、单词或者数字

scanf()函数是格式化输入函数,从键盘读取输入信息,但是由于使用不够安全,现采用与之功能相同的scanf_s()函数,差别在于后者多了一个最多字符限制数字

(1)输入数字进行简单运算,注意同时输入两个数字时中间用逗号隔开

#include<stdio.h>
int main()
{
int a, b;
printf("请输入数字:\n");
scanf_s("%d", &a);
scanf_s("%d", &b);
printf("a*b=%d\n", a*b);
while (1);
return 0;
}

(2)输入字符串,注意scanf_s()读取到空格就停止,故只能读取一个单词或者数字,字符

#include<stdio.h>
int main()
{
char world[20];
printf("请输入字符串:\n");
scanf_s("%s", world,20);
printf("你输入的字符串是:%s\n", world);
while (1);
return 0;
}


3.输入包含多个单词的字符串

gets_s()函数是gets()函数的安全函数,采用gets_s()函数来获取字符串,返回指针

#include<stdio.h>
int main()
{
char name[20];
char *ptr;
printf("请输入字符串:\n");
ptr=gets_s(name);
printf("你输入的字符串是:%s\n", name);
printf("ptr=:%s\n", ptr);
while (1);
return 0;

}

4.getchar()和putchar()

#include <stdlib.h>//system
#include <stdio.h>//输入输出
int main()
{
int ch;
printf("请输入一个字符串:\n");
while ((ch = getchar()) != '\n')
putchar(ch);
putchar('\n');
system("PAUSE");
return 0;
}

5.总结今天学习的简单的输入输出函数对

(1)3个标准输入函数

scanf_s():获取单词而非字符串,遇空格结束

gets_s():获取字符串,包括空格与标点符号,遇换行或者\n结束

fgets():是获取文件的版本,关于文件的获取后面再学习

(2)3个标准输出函数

printf():标准格式化输出,效率高,仅次于puts()

puts():效率最高的输出函数,但是只能配合gets()使用,且只能输出字符串

fputs():puts()的文件版本,后续再做学习

比较printf()和putf()的时间差别

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
const int MAX = 10000;
int main()
{
char name[MAX];
long StartTime, EndTime, TimeForPrintf, TimeForPutchar;
for (int i = 0; i<MAX; i++)
name[i] = 'a';
StartTime = clock();
for (int i = 0; i<MAX; i++)
printf("%c ", name[i]);
EndTime = clock();
TimeForPrintf = EndTime - StartTime;
StartTime = clock();
for (int i = 0; i<MAX; i++)
putchar(name[i]);
EndTime = clock();
TimeForPutchar = EndTime - StartTime;
putchar('\n');
printf("TimeForPrintf = %ld ms\n", TimeForPrintf);
printf("TimeForPutchar = %ld ms\n", TimeForPutchar);
system("PAUSE");
}

(3)getchar()和putchar()






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值