我有一个文本文件,内容如下:
"abc","def","ghi"
以下方法可正确读取文件内容:
int main()
{
char name[1024] = {0};
FILE *file = fopen("file.txt", "r");
while(1)
{
if (fscanf(file, " %[\",]s ", name) == EOF)
break;
if (fscanf(file, " %[a-zA-Z]s ", name) == EOF)
break;
printf("%s\n", name);
}
return 0;
}
然而,以下内容失败了:
int main()
{
char name[1024] = {0}, garbage[5];
FILE *file = fopen("file.txt", "r");
while(1)
{
if (fscanf(file, " %[\",]s%[a-zA-Z]s ", garbage, name) == EOF)
break;
printf("%s\n", name);
}
return 0;
}
我正在使用MSVC ++ 08,我缺少什么? 我正在寻找在while
循环中使用单个fscanf()
的解决方案。
fscanf
。如果您编写自己的词法分析状态机,将得到一个更加稳健的解决方案(即处理奇怪的边缘情况和畸形输入)。 - Oliver Charlesworth