C语言输入输出


三)多种格式输入:

scanf函数:格式化输入函数,即按控制字符串内指定的各种格式,从键盘上把数据输入到指定的变量之中。

格式:int scanf( const char *format [,argument]... );

a)与printf相同之处是:控制字符串内的每个%后面必须跟一个控制字符,参数列表中的参数都必须与控制字符的个数和类型相匹配

b)与printf的不同之处是:scanf的参数列表中,每一个变量之前都必须要带上取地址符号(&)。代表要将参数列表中所有变量的地址一一传递给系统,操作系统要按照给定变量的地址,将用户输入的数据传递给参数列表中每一个对应的变量。(只有数组变量可以不用取地址,因为数组变量自身就是一个内存地址。

而printf的参数列表中,所有变量是不用取地址直接代入的。如果scanf函数像直接代入变量不取地址,执行时会因数据送错地址造成整个程序崩溃。

c)另外一点与printf不同之处是:scanf的控制字符串内除了控制字符以外,只能指定间隔符空格或逗号。

不能像printf函数那样,随意在控制字符之间夹杂其他的文字。

以下这种写法是大错特错的,因为scanf是只负责输入不负责输出的:

scanf(“请输入工号%d,姓名%s和工资%f:”,&nNumb,sName,&fSalary);

四)简单字符输入:

a)getchar函数:从stdio流中读字符,它从标准输入里读取下一个字符。

格式:int getchar(void);

int c = getchar();

b)等价于:int c=getc(stdin)

c)也等价于:

int c;

scanf(“%c”,&c);

以上三中形式单独调用时,最好在之前调用一个函数来清理输入流:fflush(stdin);

否则,可能获取不到新输入的内容,而是获得了上一次输入时的回车符。

五:简单串输入输出函数:

gets函数:从stdin流中读取字符串,类似于scanf(“%s”,&x);。

puts函数:用来向标准输出设备写字符串并换行,类似于printf(“%s\n”,x);

四)printf函数打印时的占位控制:

a)在printf函数的控制串内,%符号与控制符之间的数字是用来控制占位的。

例如:printf(“%8.3f”,34.678f);

8代表包括小数点总共占用8个空位,.3代表保留3位小数打印。

b)%之后带-符号代表在所占用的空间内左对齐,缺省不带-符号是右对齐。

例如:printf(“价格=%-8.3f”,34.67f);

还是占用8个空位但是,与前面不同之处是左对齐。

c)如果%后面是0.x代表不占用多余空位,只控制保留的小数位。

例如:printf(“价格=%0.3f”,34.6f);

以上是printf函数对于浮点数的占位和对其管理。

d)对于整数和字符串输出只有占位控制和对齐控制,没有小数点后面的控制。

例如:printf(“学号:%-8d姓名:%-10s\n”);

8和10代表的是占位管理,-符号代表左对齐,缺省不带-符号是右对齐。

C语言输入输出包括:

a)单字符输入输出:

getchar、getc函数: c=getchar();等价于scanf(“%c”,&c) ;

putchar、putc函数:putchar(c);等价于printf(“%c”,c);

b)单行输入输出:

gets函数:gets(str);等价于scanf(“%s”,str);

puts函数:puts(str);等价于printf(“%s\n”,str);

c)格式化输入输出:

printf包括:%d、%u、%x、%c、%s等等。

scanf包括: %d、%u、%x、%c、%s等等。

d)占位控制:

对于整数和字符串在%和控制符之间的数字代表占位,负号代表左对齐。

对于浮点数除了用数字代表占位,负号代表左对齐,还有小数位数的管理。

举报
评论 0