2012-11-08 34 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

對於第一個錯誤:您不能將數組複製到另一個數組中。你可以拷貝聲音值(字符,在你的情況下)。

如果你想複製一個字符串到另一個,你確實需要使用strcpy功能(或近親,如strncpy。你應該給我們完整的代碼,以便我們能看到的問題是與您的來電。到strcpy

+0

當我用'strcpy'它打印我是這樣的:「#$%&」<> * +, - 。/ – Ricsie

+0

?!。您是否檢查過「fr」實際上是否有效?即,您是否在打開它時檢查了一切正常?如果出現問題,fr是否爲NULL那麼什麼都可能發生。 – Fabien

+0

是的,我檢查,如果它不'NULL'也檢查array1 [0]並打印它打印:克羅埃西亞 – Ricsie