You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言将有效字符串存入二维数组后打印出现空行的解决办法

问题根源
  • 代码中使用遍历所有输入的全局下标i作为validStr的存储索引,遇到无效输入时,对应下标的validStr元素不会被赋值,保持初始空字符串状态。
  • 后续打印时直接输出validStr[0]到validStr[count-1],中间未被赋值的空字符串就会被打印为空行。
修复方法

仅需修改有效字符串的存储索引,用count代替i即可,count仅在存入有效字符串时递增,能保证所有有效字符串连续存放在validStr的前count个位置,无空值间隔,符合你要求的「所有输出在第一个for循环结束后执行」的逻辑,不需要调整其他流程。

修复后完整代码:

int main()
{
    int i, count = 0;
    char input[10];
    char validStr[10][60] = {""};
    for (i = 0; i < 60; ++i){
        if(fgets(input,10, stdin) == NULL){
            break;
        }
        input[strcspn(input,"\n")] = '\0';
        if(checkIfValid(input)){
            // 把索引从i改为count即可
            memcpy(validStr[count],input,sizeof(input));
            count++;
        }
    }
    printf("%d\n",count);
    for (int j = 0 ; j < count; ++j){
        printf("%s\n",validStr[j]); 
    }
}

内容的提问来源于stack exchange,提问作者RandomDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:24:03