- /n在scanf中不表示等待换行符,而是读取并放弃连续的空白字符
- 如:
- #include<stdio.h>
- int main(void)
- {
- int n;
- scanf("%d/n",&n);// 需要输入两个数字,反正第二个不能输入空格或者直接回车,也就是说让scanf读到非空白字符为止
- printf("you typed %d/n",n);
- }
- scanf函数是设计来读取只有格式的输入的,而在读取键盘那输入的时候,你所得到的往往并不是你所想要的,“自由格式”意味着scanf在处理换行符的时候跟其他的空白一样,格式“%d%d%d”既可读
- 入 1 2 3
- 又可读入
- 1
- 2
- 3
- .................
- 作为一般规则,不能混用scanf和gets或任何其他的输入例程的调用,scanf对换行符的特殊处理几乎一定会带来问题,要们就用scanf处理所有的输入,要么干脆不用,如:
- #include<stdio.h>
- int main(void)
- {
- int n;
- char str[80];
- printf("Enter a number:");
- scanf("%d",&n);
- printf("Enter a string");
- gets(str);
- printf("you typed %d and %s/n",n,str);
- }
- 上面当向程序中输入
- 12
- string
- scanf会读取12,但却不会读到紧接其后的换行符,换行符会保留在输入流中,然后被gets()读取,后者会读入一个空行,而第二行的string则根本不会被读取
- 当然你这样输入会改变下如:12 string
- 不过最后建议不样把两个输入函数混在一起使用,避免bug的产生
scanf中的/n
最新推荐文章于 2024-09-30 22:51:18 发布