2017-11-21 5 views
0

私はなぜ以下のコードがうまくいかないのだろうかと思っていました。私は1つから別の配列をコピーするためにポインタを使用しているが、それはまったくコピーされません。何か不足していますか?ポインタを使用して2つの配列を交換する

#include <stdio.h> 
typedef struct student { 
    int id; 
    char *pname; 
    double points; 
} STUD; 

void stud_printx(STUD s) { 
    printf("[%d:%s] = %lf\n", s.id, s.pname, s.points); 
} 

void stud_swap(STUD *s1, STUD *s2) { // space to be filled - my code written 
STUD tmp; 
    tmp = *s1; 
    *s1 = *s2; 
    *s1 = tmp;  


} 

int main(void) { 
    STUD s1 = {1, "Choi", 9.9}; 
    STUD s2 = {2, "Park", 0.1}; 

    stud_printx(s1); 
    stud_printx(s2); 

    stud_swap(&s1, &s2); // space to be filled - my code written 

    stud_printx(s1); 
    stud_printx(s2); 

    return 0; 
} 
+0

必ずしもすべての学生はスタッドです:) –

+1

再ハァッ、そのプログラムには配列がありません、「*私は*配列をコピーするためにポインタを使用している」でなければなりません。 – ikegami

+0

タイプミスとして閉じるように投票しました - あなたは '* s2 = tmp;'を心に留めていましたが、ちょうどそれを正しくタイプしていないことが明らかです –

答えて

2
*s1 = *s2; // Copy original *s2 into *s1 
*s1 = tmp; // Copy original *s1 into *s1 

*s1 = *s2; // Copy original *s2 into *s1 
*s2 = tmp; // Copy original *s1 into *s2 
+0

私はコードをもう一度見て、間違いに気づいただけです。ありがとうございました!! –

関連する問題