뭐가 문제인지 진짜 모르겠습니다

#include <stdio.h>

int main()
{
	int length;
	char ChArr[100][100] = { ' ' };
	char Ch = 'A';

	int n, i, j;

	scanf("%d", &length);

	for (n = 0; n < length; n++)
	{
		for (i = n, j = length - 1; j >= n; i++, j--)
		{
			ChArr[i][j] = Ch;
			Ch++;

			if (Ch > 'Z')
			{
				Ch = 'A';
			}
		}
	}

	for (i = 0; i < length; i++)
	{
		for (j = 0; j < length; j++)
		{
			printf("%c ", ChArr[i][j]);
		}
		printf("\n");
	}

	return 0;
}

image

비쥬얼 스튜디오에서 돌리는 것과 정올 사이트에서 나오는 결과가 다릅니다. 비쥬얼에서는 정상적으로 나오는데 정올 사이트에서는 결과가 이상해요
분명히 제가 뭔가 실수를 했는데 어떤 실수인지 모르겠어요.
그리고 이렇게 결과 오류가 나오면 어떻게 오류 검색을 해야하나요?

얼핏 보기에 둘다 정상동작 중인것 같은데요

정올에선 님의 코드를 여러번 실행해주는것 뿐이겠죠

최근 비주얼 스튜디오는 콘솔프로그램 종료시 저런 메시지를 띄웁니다. 헬로월드만 찍어봐도 아실듯

ChArr를 널 문자가 아닌 공백 문자로 초기화하셔서 그런 것 같습니다.
문제가 매우 그지같네요.

아래처럼 짜면 pass합니다.

#include <stdio.h>
#include <stdlib.h>

int main() {

    enum {MAX_BUFFER_SIZE = 30};
    char ChArr[100][100] = {0};
    char Ch = 'A';

    char str[MAX_BUFFER_SIZE] = {0};

    fgets(str, MAX_BUFFER_SIZE, stdin);
    char* ptr = 0;
    size_t length = strtoul(str, &ptr, 10);

    for (size_t n = 0; n < length; n++) {
        for (size_t i = n, j = length - 1; j >= n && j < length; i++, j--) {
            ChArr[i][j] = Ch;
            Ch++;

            if (Ch > 'Z') {
                Ch = 'A';
            }
        }
    }

    for (size_t i = 0; i < length; i++) {
        for (size_t j = 0; j < length; j++) {
            if (ChArr[i][j]) {
                fprintf(stdout, "%c ", ChArr[i][j]);
            } else {
                fputs("  ", stdout);
            }
        }
        fputc('\n', stdout);
    }

    return 0;
}
2 Likes

갑사합니다

아아 Solution Data 가 님의 출력이 아니라 답지였군요.

공백 초기화를 보긴 했는데 대충 넘겼슴다

참고로 C/C++ 에서 배열의 연속 초기화는 0으로만 됩니다.
첫번째 요소만 공백이고 나머진 다 0이 들어가게 되죠. ( NULL 문자 )