我已经开始学习如何使用字符串,但我对整个概念有点困惑。我试图从包含字符串的文件中逐字逐句阅读。
这是文件:
Row, row, row your boat,
Gently down the stream.
Merrily, merrily, merrily, merrily,
Life is but a dream.
我的方法是使用
char hold[25];
// Statement
while(fscanf(fpRow, "%s", hold) != EOF)
printf("%s %d\n", hold, strlen(hold));
所以我的任务是阅读每个字符串并排除所有,和。在文件中。为此,方法是使用%[^,。]而不是%s正确吗?但是当我尝试这种方法时,我的字符串只想读取文件的第一个字,循环永远不会退出。有人可以向我解释我做错了什么吗?另外,如果询问fscanf和fgets之间的重要性并不是太多了?感谢
while(fscanf(fpRow, "%24[^,.\n ]", hold) != EOF)
{
fscanf(fpRow, "%*c", hold);
printf("%s %d\n", hold, strlen(hold));
}
答案 0 :(得分:4)
是的,%[^,. ]
应该有用 - 但请记住,当你这样做时,它会在遇到任何这些角色时停止阅读。然后,在尝试读取另一个单词之前,需要从输入缓冲区中读取该字符。
另请注意,当您使用%s
或%[...]
时,您需要指定缓冲区的长度,或者您最终会得到类似gets
的内容,其中输入错误来自用户可以/将导致缓冲区溢出。