2013-07-04 1 views
-3

이 문제를 해결하는 데 도움이됩니다. 나는 우분투 12.04에서 GCC를 사용하고있다. 키보드 n에서 5 문자열을 얻기 위해이 프로그램을 작성하는 동안이 문자열을 화면에 인쇄하십시오. 프로그램이 컴파일되지만 실행 중에는 키보드에서 문자열을 취하지만 마지막 문자열 만 인쇄합니다. 내가 작성한 프로그램은 다음과 같습니다 :C의 문자 2 차원 배열

void main()  
{ 
    char names[10]; 
    int i,j; 

    for(i=0;i<5;i++) 
    { 
     printf(" Enter a name which you want to register\n"); 
     scanf("%s",names); 
    } 
    for(i=0;i<5;i++)  
     printf(" the names you enter are %s\n", names); 

} 
+6

2 차원 배열은 배열의 배열입니다. 잠시 생각해보십시오. –

+0

당신은 코드 – Alexis

+1

에 10 문자를 포함 할 수있는 배열을 가지고 있습니다. 실제로 프로그래밍 초보자입니다. 제 질문이 너무 거칠거나 절름발이라면 신경 쓰지 마세요 ...... – ranaarjun

답변

8

1) 2 차원 배열의 각 행의 크기 = 100

을 가진 문자의 배열 인

char name[5][100]; 

이 방법으로 2 차원 문자 배열을 사용할 수 있습니다

for(i=0;i<5;i++) 
{ 
    printf(" Enter a name which you want to register\n"); 
    scanf("%99s",names[i]); 
} 

2)이 방법

char *name[5]; 
에서 포인터의 배열을 사용할 수 있습니다

배열의 각 요소는 문자열 (char 배열)에 대한 포인터입니다. 당신은> 2.7은 다음 scanf()"%ms"를 사용하는 대신 "%s"

으로 메모리를 할당 할 수 있습니다 당신이 GCC와 GCC 버전으로 컴파일 할 경우) scanf()

for(i=0;i<5;i++) 
{ 
    names[i]=malloc(100); 
    printf(" Enter a name which you want to register\n"); 
    scanf("%99s",names[i]); 
} 

(3)을 호출하기 전에 메모리 공간에 배열의 각 포인터를 할당해야

char *name[5]; 
for(i=0;i<5;i++) 
{ 
    printf(" Enter a name which you want to register\n"); 
    scanf("%ms",&names[i]); 
}