2012-11-08 7 views
2

한 문자열에 약 20 개의 국가 이름을 저장 한 다음 다른 언어로 복사하고 싶지만 항상 실수를 저지르는 사람이 있습니까?복사 C의 문자열 배열 오류

char array1[30][30], array2[30][30]; 

이 내가 첫 번째 배열에 넣어 방법은 다음과 같습니다 :

내 코드입니다

fscanf(fr, "%s", array1[i]); 

이 모두 작동하지만 내가하고 싶은 때

array2[0] = array1[0]; 

오류가 발생합니다.

incompatible types when assigning to type 'char[30]' from type 'char *' 
,

내가 사용하는 경우 :

strcpy(array2[pom2], array1[i]); 

그것은 오류를 보여줍니다 만 복사하거나 그것을 밖으로 인쇄되지 않습니다.

답변

1

는 문자로 문자를 전달하려고 했

for(i = 0; i < 30; i++){ 
    for(j = 0; j < 30; j++){ 
     targetArray[ i ][ j ] = sourceArray[ i ][ j ]; 

     /* End of the string, stop copying */ 
     if (sourceArray[ i ][ j ] == '\0'){ 
     break; 
     } 
    } 
} 
+0

이것은 빠르게 생각할 수없는 해결책입니다 –

+1

이 솔루션으로 쓸모없는 문자를 복사합니다. 그리고, 일반적으로 컴파일러에 의해 최적화되는'strcpy' 나'memcpy'를 사용하는 것보다 일반적으로 느립니다. – Fabien

+0

@ Fabien, 그게 바로 그 이유는 내가 "빨리 생각하지 솔루션" –

0

첫 번째 오류 : 배열을 다른 것으로 복사 할 수 없습니다. Salar 값 (귀하의 경우에는 문자) 만 복사 할 수 있습니다.

문자열을 다른 문자로 복사하려면 실제로 strcpy 함수 (또는 가까운 친척 인 strncpy)를 사용해야합니다. 문제가 발생한 전화 번호를 볼 수 있도록 전체 코드를 제공해야합니다 . strcpy

+0

을 내가'가이 같은 내게 뭔가를 인쇄 strcpy' 사용하는 경우 : "# $ % & '<> * +, -/ – Ricsie

+0

?!. 'fr'이 실제로 유효한지 확인 했습니까? 즉, 열 때 모든 것을 확인 했습니까? 잘못된 것이 있으면 fr은'NULL'이고 그러면 어떤 일이 일어날 수 있습니다. – Fabien

+0

예 'NULL'이 아닌지 검사하여 array1 [0]을 확인한 후 인쇄합니다. 크로아티아 – Ricsie