C语言学习(八)scanf、printf和 gets、puts

一、 printf和scanf

   printf 的函数原型是  printf("格式控制", 参量表)

   scanf的函数原型是 scanf("格式控制", 参量表);

   格式化字符串:

参数表:

使用的是输入参数和输出参数的地址。

注:输入的参量前加上址符“&”

关于scanf接受参数的时候 举个例子:

  scanf("%d,%d",&a,&b); 这个时候输入的参数必须用逗号隔开,否则读取不到。

在这里有个雷区,就是如果想在输入参数之前加上描述语句,程序运行时也必须输入描述语句,个人建议在scanf前加一句printf来描述。

关于控制输出的格式:

如printf("%5.3f\n", 3.1415926) // 输出    3.141  (小数点前如不足5位,以空格代替,并右对齐)
   上述输出格式说明符%5.3f 作用详解:
 2 表示整数部分以固定5位宽度输出。如果数据的位数小于2,则左端补以空格,若大于,则按实际位数输出。
.3(3的前面有个小数点)表示输出精确到小数点后3位。如果实际数字不足3位,则在末尾补0,若大于3位,则取前三位。

输入的格式格式必须按照格式输入,如果位数不同则编译报错,或无法正确显示。

scanf的详细解说:用scanf函数时是不是回车是结束输入,空格当做ASCII接收?那什么情况下会把回车接收,遇到空格不接收呢?_百度知道  https://zhidao.baidu.com/question/512528481.html

二、 getchar 只用于接收单子字符,常用来吸收回车键

getchar函数表示从标准输入输出流stdin读取一个字符(包括回车键,其中的一种使用方法就是跟scanf函数配合使用,用于接收回车换行符)具体用法是在连续使用输入时,回车后容易造成后面的scanf无效,在scanf之后加上getchar可以解决此类问题

char c;

c=getchar();  

printf("c中保存的字符为:%c ",c);

三、 puts 和 gets

       gets函数 其一般形式为:gets(字符数组)   其作用是从终端输入一个字符串到字符数组。该函数值是字符数组的起始地址。

注:1、gets以回车键表示输入结束,scanf以回车键和空格表示输入结束。如输入的字符中含有空格,则使用gets。

2、因为gets函数未能指定缓冲区大小,Linux中将提醒warning: the `gets' function is dangerous and should not be used.

有时候即使报错也可以正常使用执行文件。

       

      puts函数 其一般形式为:  puts (字符数组) 其作用是将一个字符串(以′\0′结束的字符序列)输出到终端并加上换行符。 假如已定义str是一个字符数组名,且该数组已被初始化为"China"。则执行puts(str);其结果是在终端上输出China。用puts函数输出的字符串中可以包含转义字符。

例如: char str[]={″China\nBeijing″}; puts(str); 输出结果: China Beijing

char s[8];
gets(s);        //输入一个字符串,主要优点是可以输入空格。
puts(s);        //将输入的字符串显示到屏幕上。

猜你喜欢

转载自blog.csdn.net/ls_dashang/article/details/81209892