【发布时间】:2016-06-08 10:40:53
【问题描述】:
我需要用fgets分析一个字符串previous reader,
然后我有一行来自:
name age steps\n
mario 10 1 2 3 4\n
joe 15 3 5\n
max 20 9 3 2 4 5\n
每列有可变数量的步骤, 然后我可以阅读姓名和年龄
sscanf(mystring, "%s %d", name, &age);
在此之后,我有一个用于读取所有步骤的 for 循环
int step[20];
int index=0;
while(sscanf(mystring,"%d", &step[index++])>0);
但是这个循环永远不会结束用年龄列填充所有数组数据。
【问题讨论】:
-
我猜
while循环将结束,因为它会读取名称并且无法将其解释为数字。请发帖minimal reproducible example。 -
你一遍又一遍地阅读相同的字符串......你期望什么
-
您总是在扫描相同的字符串,您需要将传递给
sscanf的字符串提前;只需使用strtok,如 terence hill 的答案所示。 -
"我需要分析一个字符串" --> 这通常会导致一个问题:代码是否应该检测到意外的字符串,例如“dan 1 2 3 x”或“joe bob 1 2 3”?还是您只是想要一个假设字符串中的数据格式正确的答案?
-
@RahulSinha:如果您要每小时编辑 10 个或更多帖子,最好确保您的编辑是重要的,而不是微不足道的。
标签: c