在C語言中,函數(shù)的參數(shù)是通過值傳遞的,而不是通過引用傳遞的,這意味著傳遞的參數(shù)將被復制。因此,在函數(shù)中處理的是對象的副本,而不是實際對象。為了引用實際對象,需要傳遞引用。 另外,避免使用scanf()(和gets())讀取輸入。改用fgets()。 因此,您應(yīng)該將代碼更改為: void enter_details(details *d1){ printf("Enter your name: "); getstring(d1->name, sizeof(d1->name))); printf("Enter your country: "); getstring(d1->country, sizeof(d1->country)); printf("Enter your age: "); getint(&d1->age); printf("Enter your height (in meters): "); getint(&d1->height);} scanf()的另一種方法是讀取字符串: char *getstring(char *str, int size){ if (!fgets(str, size, stdin)) { fprintf(stderr, "Input error\n"); return NULL; } str[s