我正在尝试解析并转换csv,并且我认为我会尝试使用c,因为我正在学习该语言。
int main()
{
char * s1, * s2;
int field_count = 0;
while ((field_count = scanf("%20[^;];%s", s1, s2)) != EOF)
{
printf("%d\n", field_count));
if (field_count != 2)
continue;
}
return 0;
}
我不明白为什么field_count
始终为0,无论每行有多少个字段,循环也不会结束。
我尝试将while子句更改为:
while ((field_count = scanf("%s", s1)) != EOF)
但没有区别。
我尝试过谷歌搜索,但很难找到保留返回值和检查EOF的示例。
答案 0 :(得分:0)
这是应该有效的代码示例。 它为s1和s2分配存储缓冲区。 此代码期望字段长度最多为99个字符。
int main(int argc, char * argv[])
{
char s1[100], s2[100];
int field_count = 0;
while ((field_count = scanf("%99[^;];%99[^\n]", s1, s2)) >= 0)
{
printf("%d '%s' '%s'\n", field_count, s1, s2);
}
return 0;
}
Scanf有点限于解析输入字符串。当你给它一个空字符串时,你可能会得到意想不到的结果。