我有以下输入:
AG23,VU,Blablublablu,8
IE22,VU,FooBlaFooBlaFoo,3
and so on...
我希望它使用类似以下代码的
scanf()
“解析”:char sem[5];
char type[5];
char title[80];
int value;
while(scanf("%s,%s,%s,%d", sem, type, title, &value) == 4) {
//do something with the read line values
}
但是代码的执行给了我:
illegal instruction
您将如何读取以逗号分隔的文件?
最佳答案
逗号不被视为空格字符,因此格式说明符"%s"
将占用,
,并且行上的所有其他内容均超出数组sem
的范围,从而导致未定义的行为。要更正此问题,您需要使用扫描集:
while (scanf("%4[^,],%4[^,],%79[^,],%d", sem, type, title, &value) == 4)
哪里:
%4[^,]
表示最多可以读取四个字符或直到遇到逗号为止。指定宽度可防止缓冲区溢出。