【问题标题】:How do i get the right output? [duplicate]我如何获得正确的输出? [复制]
【发布时间】:2019-10-24 21:04:54
【问题描述】:

所以程序除了其中一部分之外都可以工作。

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

【问题讨论】:

  • 请缩进你的代码 - 它几乎不可读。
  • @pmg 之后打印?

标签: c


【解决方案1】:

strtok()移动到printf()之后。
原因是 strtok() 更改了它的参数,因此您打印了更改。

而不是

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

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

【讨论】:

  • 感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2021-12-13
相关资源
最近更新 更多