먼저 코드에 논리적 오류가 있습니다. 글쎄, 그건 내가 기대거야,이 코드scanf()의 오류
#include <stdio.h>
int main()
{
long i,j,t;
scanf("%ld",&t);
long n[t],d[t][t];
for(i = 0; i < t;i++){
scanf("%ld",&n[i]);
for(j = 0; j < n[i] ;j++){
scanf("%ld",&d[j][i]);
}
}
for(i = 0; i < t;i++){
for(j = 0; j < n[i] ;j++){
printf("%ld ",d[j][i]);
}
printf("\n");
}
return 0;
}
그리고 입력 데이터
2
4
25 20 30 90
3
45 50 55
입니다 그리고 그 결과는 잘
25 20 30 90
45 50 55
입니다. 그러나, 입력이 ?? 왜 출력은 위와 같이이 될
12 34 89 23 56 78 89
12 67 89 34 56 4206692 7 2293472 1982002386 16 3 2293344 2293408 0 2293552 0 0 4
198585 8918456 1982106837 1982010910 8918456 2293640 0 0 1985286516 2009576437 0
0 2293664 2009323341 2293740 2147348480 0
34 56 78 90 12 34 4199405 1982595752 8 12 2293424 2 2 1982356412 2147348480 2293
608 2147348480 1 -1 297753669 1982010784 1982015505 4199044 0 0 2147348480 21473
48480 0 0 0 7273647 2009576392 0 0 0 1 0 20 52 0 0 438759246 736 -214797894 1420
760826203 2272 852421325 3108 944791496 4028 -1322777276 4988 9 1 1 1204 7168 4
2 152 11832 7 1 40 12316 1682469715 1 140 44 0 0 0 2 0 7209065 5701724 6029427
12 34 89 23 56 78 89
좋고, 간단한 질문이 닮아
3
5
12 67 89 34 56
6
34 56 78 90 12 34
7
12 34 89 23 56 78 89
결과 닮아 2보다 위에 입력하면 같은 결과가 발생합니다. 가능한 모든 답변과 링크가 마음에 들지 않으면 ?? 감사합니다
여기서 수행하려는 작업을 분명히하는 데 도움이 될 것이라고 생각합니다. 특별한 이유로 2D 어레이를 사용하고 싶습니까? 다양한 길이의 행을 원하십니까? 목표는 무엇입니까? 행 5 위치 3의 요소에 즉시 액세스 할 수 있도록 하시겠습니까? 자세한 내용은 좋은 해결책을 찾는 데 도움이 될 것입니다. – Justin
첫 번째 예에서는'd'를'long [2] [2]'로 선언하고 4 개의 데이터로 채 웁니다. 프로그램 메모리 할당이 끝났습니다. 그건 C에서 매우 기초입니다 –