strtok给出了空字符串或者我不知道的东西

时间:2014-11-25 12:25:04

标签: c char strtok arrays

我有以下源代码:

#include <stdio.h>
#include <time.h>
#include <string.h>

int main(int argc, char *argv[])
{

    char string[100];
    printf("Give me some text. \n");
    fgets(string, 100, stdin);

    char delimiter[]=" ";
    char *erg;

    erg=strtok(string, delimiter);

    while(erg != NULL){
        printf("Wort: %s \n", erg);

        erg=strtok(NULL, delimiter);
    }

    return 0;
}

例如,当我输入文本“abc def”时,程序就像我希望它一样工作。它打印出“abc”和“def”字样。 但是当我输入文本“abc def”时,它打印出“abc”,“def”和“”。 我不想打印出最后一个空的“”。 有人可以告诉我如何过滤它吗?

Gruß,Andre

2 个答案:

答案 0 :(得分:0)

IMO,您需要摆脱\nfgets()的{​​{1}}读取的最后一次fgets(string, 100, stdin);

您可以通过多种方式执行此操作,例如

  1. 在分隔符列表中包含\n。例如" \n"
  2. 手动检查字符串的长度,在最后一个位置,将\n替换为\0

答案 1 :(得分:0)

fgets获取整个字符串以及输入字符串后按下的\n字符。使用

string[strlen(string)-1]='\0';

\n替换string中的\0