You need to enable JavaScript to run this app. C语言实现逐行字符输入输出时无法正确打印结果的问题求助
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现逐行字符输入输出时无法正确打印结果的问题求助

代码问题定位与修复

核心问题点

  • 需求要求处理2行输入,代码硬编码了3行的输入输出逻辑,数组也冗余开辟了3行空间
  • 输出阶段未按每行实际有效字符长度打印,强制遍历全部SIZE(10)个位置,会把初始化为0的空字符全部输出,导致多出大量无意义内容
  • 代码中printf("Enter three lines of text:\n")为多余提示输出,会直接干扰输出判定结果
  • 输入循环未处理getchar返回EOF的场景,异常输入下可能出现死循环

修复后代码

#include <stdio.h>
#define SIZE 10
#define LINE_NUM 2 // 对应需求的2行输入要求

int main(void) {
    char string[LINE_NUM][SIZE];
    int valid_len[LINE_NUM] = {0}; // 存储每行实际输入的有效字符长度
    int i, j;
    int c;

    // 初始化字符数组
    for(i = 0; i < LINE_NUM; i++) {
        for(j = 0; j < SIZE; j++) {
            string[i][j] = 0;
        }
    }

    // 读取输入
    for (i = 0; i < LINE_NUM; i++) {
        j = 0;
        while (j < SIZE && (c = getchar()) != EOF && c != '\n') {
            string[i][j] = c;
            j++;
        }
        valid_len[i] = j;
        // 读到EOF且无有效输入时直接终止
        if (c == EOF && j == 0) break;
    }

    // 仅输出每行的有效字符
    for (i = 0; i < LINE_NUM; i++) {
        for (j = 0; j < valid_len[i]; j++) {
            putchar(string[i][j]);
        }
        putchar('\n');
    }

    return 0;
}

效果验证

输入两行内容C、U时,输出会严格对应两行C、U,符合需求要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 17:15:03