我有以下输入:
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
}
但代码的执行给了我:illegale instruction
你会如何读取这样的逗号分隔文件?
hmj*_*mjd 39
逗号不被视为空白字符,因此格式说明符"%s"将使用,行上的所有其他内容写入超出数组边界的sem行为,从而导致未定义的行为.要更正此问题,您需要使用扫描集:
while (scanf("%4[^,],%4[^,],%79[^,],%d", sem, type, title, &value) == 4)
哪里:
%4[^,] 意味着最多读取四个字符或直到遇到逗号.指定宽度可防止缓冲区溢出.