一个关于scanf()函数的问题

C语言 码拜 8年前 (2016-04-16) 892次浏览
各位高手,有一个问题想讨教一下,谢谢~
在下面这段代码中,是怎么做到把secret.txt文件(见提问末)中的单词一个一个输入到word中的。
是不是原因是有while语句的原因呢?
但是本人还是不太懂while语句怎么做到把单词分开的。
代码如下:
#include <stdio.h>
int main()
{
char word[10];
int i = 0;
freopen(“secret.txt”,”r”,stdin);
freopen(“message1.txt”,”w”,stdout);
freopen(“message2.txt”,”w”,stderr);
while (scanf(“%9s”, word) == 1) {
i = i + 1;
if (i%2)
fprintf (stdout, “%s\n”, word);
else
fprintf(stderr, “%s\n”, word);
}
freopen(“con”, “r”, stdin);
return 0;
}
secret.txt文件:
THE BUY SUBMARINE SIX WILL EGGS SURFACE AND AT SOME NINE MILK PM
解决方案

10

引用:

先要了解stdin、stdout、stderr,即标准输入,标准输出,标准错误。然后使用scanf函数从缓冲区内读取内容,读取的最大长度为9个字符(char word[10]的最后一位要存储字符串结束符),然后利用fprintf 函数输入到manager1和manager2中(第偶数个单词输入到message1.txt,第奇数个单词输入到message2.txt中)

应该是第奇数个单词输入到message1.txt,第偶数个单词输入到message2.txt

10

引用:
Quote: 引用:

scanf(“%9s”, word) 表示最多拷贝9个字符
可以在格式化字符串中的”%”各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。

举个例子啊,例如第一次读取的时候,读取了9个字符,word中不应该是THE BUY /n吗,输入到message1种的不也应该是THE BUY /n吗,但是实际上空格起到了分隔的作用,这是为什么。

scanf不能读入空格,空格会被当做空白符(空格(space)、制表符(tab)和新行符(newline))达到分隔的作用


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一个关于scanf()函数的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)