所以该程序只工作一部分。
我真的不明白为什么它没有输出正确的东西。我也必须使用strtok,strcmp和fgets函数。所以我不能改变那些。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char a[256];
while(x==0){//this will loop until the exit cammand is given
int y = (strcmp(fgets(a, 256, stdin), "exit\n"));
char* token = strtok(a, " ");
int numOfTokens = 0;
if (y == 0){
exit(0);
}
else{
printf("Line read:%s\n", a);
printf("Token(s):");
while(token != NULL){
numOfTokens +=1;
printf("\n%s", token);
token= strtok(NULL, " ");
}
printf("%i token(s) read\n", numOfTokens);
}
}
return 0;
}
因此一切都是从linux终端输入的。输出应为:
`h e l l o//input
//output as followed
Line read:h e l l o
Token(s):
h
e
l
l
o
5 token(s) are read`
但是当我做错了的事情是:Line read:h
我将如何在它打印用户输入的整行的地方
答案 0 :(得分:0)
将strtok()
移到printf()
之后。
原因是strtok()
更改了其参数,因此您可以打印更改。
代替
... strtok(a, " ") ... ;
... printf("%s", a) ... ;
做
... printf("%s", a) ... ;
... strtok(a, " ") ... ;