c언어 문제질문드립니다..
마징가
10#include stdio.h#include string.h#define STR_NUM 5
int main (void){ int i,j; char str[STR_NUM][20]; char temp[STR_NUM]; int dummy;
for (i=0; iSTR_NUM ; i++) { printf(문자열 입력%d : \n,i+1); gets(str[i]); }
for(i=0;iSTR_NUM;i++) for(j=0;j(STR_NUM-i)-1;j++) { if(strlen(str[j]) strlen(str[j+1]) ) { strcpy(temp,str[j]); strcpy(str[j],str[j+1]); strcpy(str[j+1],temp); }
else; }
for(i=0;iSTR_NUM;i++) puts(str[i]);
scanf(%d,&dummy);
return 0;}
제가 궁금한 부분이 바로 저 진한색으로 표시된 부분입니다.
분명 strcpy로 str[j]에 있는 문자열을 temp가 받으려면
temp가 1차원배열이아니라 str과 똑같이 2차원배열이어야 하는 것 아닌가요?
근데 왜 temp를 1차원배열로만 해줘도 복사가 잘되고 프로그램이 잘돌아가는건지요 모르겠습니다 ㄷㄷ..
-
내담
그런데 Temp는 길이가 5 밖에안되어서 문자를 5개이하로 밖에 못담는것아닌가요? 그런데 프로그램에 5개이상 문자담아도 잘되요 ㅜㅜ 왜이런지...
-
머슴밥
str은 2차원배열이지만 temp에 복사할떄 1차원배열처럼 사용했네요.
즉 한줄로만 접근했기 때문에 복사가 가능한겁니다.