【发布时间】:2014-03-17 23:25:42
【问题描述】:
我有一个疑问,例如,如果我有这样的输入:
5 4
1 2 3 4 5
2 3 4
2 3
1 2 3
第一个数字表示不同的“玩具”,每个孩子对应于第二个数字,即四,因此代表每个孩子的行数和他们想要的玩具......
如何在 ansi C 中读取这样的输入?
用strtok?或者还有其他更简单的方法吗?
我可以这样做
char line [250];
char * tok;
char *ptr = line;
while((scanf("%s",line)!= EOF){
while ((tok = strtok(ptr, " ")) != NULL)
{
pseudo part
//convert to int
//add to array
}
}
但是有没有更简单的方法可以在不使用 tok 的情况下进行此输入? 谢谢...
【问题讨论】:
-
ptr的来源应该是个谜吗? -
您阅读过
strtok的手册页吗?连续调用使用 NULL 而不是原始值。 -
我举了一个例子,就像我说的那样,我不想再像上面所说的那样使用 strtok 的替代方法,我想要另一种方法来做到这一点......
-
scanf("%s", line)不会读取一行,它会读取一个空格分隔的字符串,所以你不需要strtok。 -
如果您至少阅读过输入的工作原理,您就会明白为什么要使用 strtok...。