如何避免打印(null)?

时间:2015-03-22 23:36:45

标签: c

我试图打印这些令牌,但我一直打印(null)。这是空指针,但我认为我在while循环中占了这个。 编辑:哦,我没有尝试在输入中打印第一个字符串。我试图在第一次输入后打印所有内容,但我继续打印(null)

input = strtok(input_buffer, "\n ")
while (input != NULL)
{
   input = strtok(NULL, "\n");
   printf("%s", input);
}
printf("\n");

5 个答案:

答案 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");