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
相关产品推荐
相关产品推荐

