一些不知的scanf问题

scanf("格式化字符串",地址列表);

   <1>如果scanf产生了错误,那么返回0

   注意:

   <1>scanf寻找数据起始位置时,跳过空白字符(空格、回车、制表符等),即遇到空白符认为结束一次输入操作

   <2>scanf中%e、%g、%f可以互换

   <3>scanf从左往右依次分析格式字符串。如果遇到一个不符合的字符,就把这个字符放回,下次再读

   如:

   1-20.3-4.0e3

   %d%d%f%f

   i = 1

   j = -20

   x = 0.3

   y = -4.0e3

<2>scanf不会读取最后的换行符,所以有时候用scanf("%*c")将换行符读出,防止后面的读取

   如:

   printf("请输入c1:");

   scanf("%c",&c1);

   printf("请输入c2:");

   scanf("%*c");

   scanf("%c",&c2);

<3>scanf("%*[^\n]");

   *表示忽略读取到的内容

   [^\n]:任何非\n的字符,将任何\n的字符全部读走

   i和d再printf和scanf中的区别:

   <1>printf中没有区别

   <2>scanf中d只能匹配十进制数字;i可以匹配八进制 十进制 十六进制

<4>组织格式化输入输出字符串:

   fprintf(&iostream, "格式化字符串", 表达式列表);

   fscanf(...);

   &iostream:可以是stdout/stdin

<5>字符缓冲的问题见 输入、输出缓冲区

本文出自 “BaggerSky” 博客,谢绝转载!

你可能感兴趣的:(c,一些不知的scanf问题)