C 中字符串输入输出逻辑错误

问题描述 投票:0回答:1

我使用了 Visual Studio。 该代码的目的是打印垂直读取接收到的字符排列时出现的值。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int i, j;
    char a[5][15] = { 0, };
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 15; j++) {
            scanf("%c", &a[i][j]); 
        }
    }

    for (i = 0; i < 15; i++) {
        for (j = 0; j < 5; j++) {
            printf("%c", a[j][i]);
        }
    }
    return 0;
}

输入

AABCDD
afzz
09121
a8EWg6
P5h3kx

预期输出

Aa0aPAf985Bz1EhCz2W3D1gkD6x

实际输出 -> 它不会打印任何内容。

我不知道为什么它不能达到我的目的。 请帮我解释一下。

arrays c string char
1个回答
0
投票

您的代码将尝试填充 5x15 数组中的所有字符。一旦看到行尾字符,就需要停止填充行:

    for (j = 0; j < 15; j++) {
        char c;
        scanf("%c", &c);
        if (c == '\n')
            break;
        else
            a[i][j] = c;
    }

这只是为了让您开始。您应该调试代码并解决其他问题。

© www.soinside.com 2019 - 2024. All rights reserved.