2013-04-21 79 views
0

我正在學習C,我的一個函數(這裏沒有顯示)取決於兩個數組是相同的。我有一個數組,並且正在嘗試生成一個副本,但是會發生什麼情況是兩個數組在複製後都會變爲0。我不知道這是怎麼發生的......任何人都可以幫助解釋爲什麼發生這種情況,並提供解決方案,如何做到這一點?複製數組導致0?

#include <stdio.h> 

int main(){ 

    int array[5]={3,2,7,4,8}; 
    int other_array[5]={0,0,0,0,0}; 

    for (int i=0; i<5; i++) array[i]=other_array[i]; //Copies array into other_array 

    printf("array is:\n"); 
    for (int j=0; j<5; j++) printf("%d", array[j]); 
    printf("\nother_array is:\n"); 
    for (int i=0; i<5; i++) printf("%d", other_array[i]); 
    printf("\n"); 

    return 0; 
} 

/* 
When run this yields 
********************** 
array is: 
00000 
other_array is: 
00000 
*/ 

回答

6
//Copies array into other_array 
for (int i=0; i<5; i++) array[i]=other_array[i];  

嘗試:

other_array[i] = array[i]; 

賦值運算符的右操作數的值賦給到左操作數的對象。而不是相反。

此外,在其他的答案說:

printf("\nother_array is:\n"); 
for (int i=0; i<5; i++) printf("%d", array[i]); 

您的打印array,而不是other_array

+0

Ohhhh right我的任務倒退了。謝謝,我花了這麼長時間! – 2013-04-21 21:02:45

2

要打印的錯陣列,您打印array兩次

printf("array is:\n"); 
for (int j=0; j<5; j++) printf("%d", array[j]); 
printf("\nother_array is:\n"); 
for (int i=0; i<5; i++) printf("%d", other_array[i]);//<-- here 
printf("\n"); 
0

當然,你可以只寫:

int main(){ 

    int array[]  = { 3, 2, 7, 4, 8}; 
    int other_array[] = { 0, 0, 0, 0, 0}; 

    memcpy(other_array, array, sizeof other_array); 

    /* then print */ 

} 

它也可能是一個好主意,#include <assert.h>然後:

assert(sizeof array == sizeof other_array)