当我编译我的程序时,我没有得到任何错误,但是当我启动它时,我得到一个"分段错误"。我尝试阅读的文件是这样构建的:
i = 7
我强烈感觉我的sscanf功能是个问题。 请帮帮我。
322;Peter;m
233;Chad;m
211;Lisa;w
答案 0 :(得分:1)
我的坏话: FILE输入的MAXCHAR为低。 文件有超过30个字符。
答案 1 :(得分:0)
在你的sscanf中%s
不知道何时停止:
sscanf(string, "%d;%s;%c", &a, n, &g);
如果没有在;
上正确标记,%s
将继续抓取输入,直到下一个空格(在您的情况下将是该行的结尾)。它应该改为
sscanf(string, "%d;%[^;];%c", &a, n, &g);
%[^;]
指定抓取不是;
的字符,从而获得所需的结果。
为了更加健壮,您可能希望使用strtok
首先将其;
分开,然后处理每个细分。
答案 2 :(得分:0)
我认为根据您的目的,下面写的行就足够了
ReturnVal = sscanf(strinp1, "%d %c %100[^;] %c %c", &a, &Separator1,
n,&Separator2, &g);