C语言创建字符串数组时输入达最大允许数量如何跳出循环?
姓名录入循环无法跳出问题修复方案
问题原因
- 循环结构冗余错误:你嵌套了do-while和for两层循环,外层do-while的终止条件逻辑完全反向。
while (yesNo == 'Y' || counter == 5)中||表示任意条件成立就继续循环,当输入满5个姓名后counter等于5,会触发条件反复进入外层循环,永远无法退出。 - 代码写法不规范:
scanf(" %s", &namesArray[x][0])参数冗余,数组名本身就是首地址,直接传入namesArray[x]即可。
修正后可运行代码
#include <stdio.h> int main(void) { // 最多存储5个姓名,单个姓名最长支持99个字符 char namesArray[5][100]; int x; char yesNo; int counter = 0; // 单层循环即可实现需求,无需嵌套 while (counter < 5) { printf("\n请输入朋友姓名:"); scanf(" %s", namesArray[counter]); counter++; // 存满5个直接结束,无需询问是否继续 if (counter == 5) { break; } printf("\n是否继续输入其他朋友姓名?输入Y继续,输入N结束:"); scanf(" %c", &yesNo); if (yesNo == 'N') { break; } } // 打印所有录入的姓名 printf("\n你录入的朋友姓名如下:\n"); for (x = 0; x < counter; x++) { printf("%s\n", namesArray[x]); } return 0; }
内容的提问来源于stack exchange,提问作者SimTim124
相关产品推荐
相关产品推荐

