【发布时间】:2021-02-19 01:42:03
【问题描述】:
我正在编写一个可以读取 csv 格式文本的程序,我遇到了一个问题,即 sscanf 仅将整个内容解析为一个字符串,当它被“,”分隔时。
例如下面的代码sn-p
char str[100] = "Alex,2933,89,";
char name[50] = "";
int id;
double mark;
sscanf(str, "%s,%d,%lf,", name, &id, &mark);
printf("%s\n", name);
printf("%d\n", id);
printf("%f\n", mark);
输出是:
Alex,2933,89,
896
0.000000
这显然不是预期的输出。
但是当 str 被编辑为 str = "Alex 2933 89 " 时,代码给了我正确的输出。
工作代码:
char str[100] = "Alex 2933 89 ";
char name[50] = "";
int id;
double mark;
sscanf(str, "%s %d %lf ", name, &id, &mark);
printf("%s\n", name);
printf("%d\n", id);
printf("%f\n", mark);
正确的输出:
Alex
2933
89.000000
我可以知道如何解决这个问题吗?
【问题讨论】:
-
你能纠正正确的输出吗?
-
提示:始终检查函数调用的返回值。