我如何获得正确的输出?

时间:2019-10-24 21:04:54

标签: c

所以该程序只工作一部分。

我真的不明白为什么它没有输出正确的东西。我也必须使用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 我将如何在它打印用户输入的整行的地方

1 个答案:

答案 0 :(得分:0)

strtok()移到printf()之后。
原因是strtok()更改了其参数,因此您可以打印更改。

代替

... strtok(a, " ") ... ;
... printf("%s", a) ... ;

... printf("%s", a) ... ;
... strtok(a, " ") ... ;