You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用while与for循环实现带连续输入的反转字符串功能时输出不匹配

问题根源

当前代码的执行顺序逻辑错位:while循环进入后第一步就打印了下一次的输入提示,才处理上一次输入的反转计算和输出,因此会出现先出下一次提示、再打印上一次反转结果的问题。

修正后完整代码
#include <stdio.h>
#include <string.h>

int main () {
   
   char userInput[50];
   int length;
   
   printf("Please enter a line of text (maximum 50 characters). Type done, Done, or d to exit program.\n");
   
   fgets(userInput, 50, stdin);
   userInput[strlen(userInput) - 1] = '\0';
   
   // 输入不是退出指令则循环处理
   while (strcmp(userInput, "done") != 0 && strcmp(userInput, "Done") != 0 && strcmp(userInput, "d") != 0) {
      length = strlen(userInput);
      // 反转打印当前输入
      for (int i = length - 1; i >= 0; --i) {
         printf("%c", userInput[i]);
      }
      printf("\n");
      // 反转打印完成后再给出下一次输入提示
      printf("Please enter a line of text (maximum 50 characters). Type done, Done, or d to exit program.\n");
      fgets(userInput, 50, stdin);
      userInput[strlen(userInput) - 1] = '\0';
   }
   return 0;
}
核心改动说明
  • 把原本放在while循环开头的输入提示语句,挪动到了反转输出代码之后、读取下一次输入之前
  • 调整后执行流为:用户输入内容→判断不是退出指令→打印当前输入的反转结果→给出下一次输入提示→读取下一次输入,完全符合要求的打印顺序。

内容的提问来源于stack exchange,提问作者CMOS_BATTERY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:09:03