我有以下源代码:
#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
答案 0 :(得分:0)
IMO,您需要摆脱\n
中fgets()
的{{1}}读取的最后一次fgets(string, 100, stdin);
您可以通过多种方式执行此操作,例如
\n
。例如" \n"
。\n
替换为\0
。答案 1 :(得分:0)
fgets
获取整个字符串以及输入字符串后按下的\n
字符。使用
string[strlen(string)-1]='\0';
用\n
替换string
中的\0
。