如何为char* name[]和char* name2[]分别执行独立的for循环?
修改后的代码
#include <stdio.h> #include <string.h> int main(void) { char* name[] = {"Bill", "Charlie", "Fred"}; char* name2[] = {"George", "Ginny", "Percy", "Ron"}; // 遍历第一个数组(长度为3) for (int i = 0; i < 3; i++) { if (strcmp(name[i], "Ron") == 0) { printf("Found\n"); return 0; } } // 遍历第二个数组(长度为4) for (int i = 0; i < 4; i++) { if (strcmp(name2[i], "Ron") == 0) { printf("Found\n"); return 0; } } printf("Not found\n"); return 1; }
改动说明
- 把原有的单个循环拆成两个独立的
for循环,分别匹配两个数组的长度:第一个循环仅遍历name数组(循环条件i < 3),第二个循环仅遍历name2数组(循环条件i < 4) - 每个循环内只检查当前数组的元素,彻底避免了原代码中
i >= 3时访问name[i]导致的越界问题,解决终端崩溃隐患 - 只要在任意一个数组中找到"Ron",就立即输出结果并终止程序;若两个数组遍历完都未找到,则输出"Not found"
内容的提问来源于stack exchange,提问作者Harshil Zahran
相关产品推荐
相关产品推荐

