我试图打印这些令牌,但我一直打印(null)。这是空指针,但我认为我在while循环中占了这个。 编辑:哦,我没有尝试在输入中打印第一个字符串。我试图在第一次输入后打印所有内容,但我继续打印(null)
input = strtok(input_buffer, "\n ")
while (input != NULL)
{
input = strtok(NULL, "\n");
printf("%s", input);
}
printf("\n");
答案 0 :(得分:2)
在循环中切换printf / strtok的顺序,因为你已经拥有了循环外的第一个标记
input = strtok(input_buffer, "\n ")
while (input != NULL)
{
printf("%s", input);
input = strtok(NULL, "\n");
}
printf("\n");
答案 1 :(得分:2)
稍微调整一下事情的顺序。
input = strtok(input_buffer, "\n ")
while (input != NULL)
{
// Print first.
printf("%s", input);
input = strtok(NULL, "\n");
}
printf("\n");
答案 2 :(得分:2)
您还可以使用for循环:
for(input = strtok(input_buffer, "\n ");input != NULL;input = strtok(NULL, "\n"))
{
// Print first.
printf("%s", input);
}
printf("\n");
答案 3 :(得分:1)
您首先将值分配给变量输入,然后打印它。记住,您在循环中更改输入的值。只需要交换第4行和第5行。试试这个:
input = strtok(input_buffer, "\n ")
while (input != NULL)
{
printf("%s", input);
input = strtok(NULL, "\n");
}
printf("\n");
答案 4 :(得分:0)
分离字符串后,打印字符串,因此前一个字符串将丢失,因此在下次分开之前打印字符串。
input = strtok(input_buffer, "\n ");
while (input != NULL)
{
printf("%s", input);
input = strtok(NULL, "\n");
}
printf("\n");