C语言新手求助:实现基于scanf/printf的循环确认功能
实现循环询问用户是否继续的C语言代码
嘿,作为刚学到C语言第二单元的新手,能明确自己的需求并来提问,这点超棒!我刚好可以帮你实现这个功能,只用scanf和printf就搞定,下面是代码和详细解释:
#include <stdio.h> #include <string.h> int main() { char input[10]; // 定义足够大的数组存储用户输入 do { printf("是否继续?请输入yes或no:"); // 用scanf读取字符串,自动跳过空白字符(比如换行) scanf("%s", input); // 比较输入内容,strcmp返回0表示两个字符串完全相等 if (strcmp(input, "yes") == 0) { printf("程序继续运行中...\n"); // 在这里添加你需要继续执行的代码逻辑 } else if (strcmp(input, "no") != 0) { printf("输入无效,请重新输入yes或no!\n"); } // 只要输入不是no,就继续循环询问 } while (strcmp(input, "no") != 0); printf("程序已终止。\n"); return 0; }
关键知识点解释
- do-while循环的选择:我们需要至少询问用户一次,do-while循环会先执行一次循环体的内容,再判断循环条件,完美匹配这个需求。
- 字符串比较用strcmp:在C语言里,不能直接用
==比较字符串内容,因为input是字符数组的地址,"yes"是字符串常量的地址,两者地址永远不相等。strcmp函数会逐字符对比两个字符串,返回0就代表内容完全一致。 - 输入缓冲区处理:
scanf("%s", input)会自动跳过输入前的空白字符(比如上一次输入后留下的换行符),所以不用担心残留的换行影响下一次输入。另外定义input[10]是为了预留足够空间,避免输入过长导致缓冲区溢出。 - 逻辑流程梳理:
- 每次循环先提示用户输入
- 读取输入后判断:如果是
yes,执行后续代码;如果是no,退出循环;其他输入则提示无效,继续循环。
内容的提问来源于stack exchange,提问作者Nathan Locke
相关产品推荐
相关产品推荐

