C语言如何提取for循环内满足指定条件时的循环变量j的值
解决方案
你可以通过定义数组存储每次符合条件的j值,配合你现有的totalvalid计数变量作为数组下标即可实现需求,修改后的代码如下:
// 循环外定义存储j值的数组,大小取stringnumber即可覆盖所有可能的符合条件的情况 int valid_j_list[stringnumber]; int totalvalid = 0; for(int j = 0; j < stringnumber; j++){ int valid = 0; if(str[j][10] == '\0'){ for(int k = 0; k < 10; k++){ if(str[j][k] >= 'A' && str[j][k] <= 'Z'){ valid++; } } if (valid == 10){ // 触发条件时将当前j存入数组对应位置 valid_j_list[totalvalid] = j; totalvalid++; } } }
后续你需要使用这些j值时,直接遍历valid_j_list的前totalvalid个元素即可,示例用法:
// 打印所有符合条件的j值 for(int i = 0; i < totalvalid; i++){ printf("第%d次触发条件时的j值为:%d\n", i+1, valid_j_list[i]); }
如果你的stringnumber数值很大,担心栈上数组溢出,可以改用动态内存分配申请堆空间存储:
// 申请动态内存 int *valid_j_list = (int *)malloc(stringnumber * sizeof(int)); // 这里放上面的循环逻辑,使用方法和数组完全一致 // 使用完成后记得释放内存,避免内存泄漏 free(valid_j_list); valid_j_list = NULL;
内容的提问来源于stack exchange,提问作者NJClassic
相关产品推荐
相关产品推荐

