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)占位控制:
对于整数和字符串在%和控制符之间的数字代表占位,负号代表左对齐。
对于浮点数除了用数字代表占位,负号代表左对齐,还有小数位数的管理。
请先 后发表评论~