我正在研究一個項目,該項目要求我創建特定結構類型的數組。該結構是這樣的:將字符數組賦值給結構中的字符數組
typedef struct
{
char array[30];
int num;
}structure
我已聲明這些結構的陣列是這樣的:
structure struct1[5];
我通過這種結構陣列,以填充有字符串和一個前四個元素的函數數。第五個留空。在後面的程序中,我再次傳遞數組並嘗試使用gets()將結構中的字符串設置爲用戶確定的字符串。我得到這個錯誤:
438:19: error: incompatible types when assigning to type 'char[30]' from type 'char *'
如果我需要提供更多的說明,請告訴我。
謝謝!
編輯:這是我在做什麼:
typedef struct
{
char array[30];
int num;
}structure;
void fillStructs(structure[]);
void userEditStructs(structure[]);
main()
{
structure myStructs[5];
fillStructs(myStructs);
userEditStructs(myStructs);
return 0;
}
void fillStructs(structure s[])
{
//code to fill myStructs elements 0-3.
}
void userEditStructs(structure s[])
{
char newArr[30];
int newNum;
printf("Please enter your string:\n\nEntry:\t");
gets(newArr);
printf("Please enter your number:\n\nEntry:\t");
scanf("%i", newNum);
s[5].array = newArr;
s[5].num = newNum;
}
請在將結構數組傳遞給函數的地方添加代碼。 –
使用strcpy而不是運算符= –
永遠不要使用'gets()'。這是危險的,它被棄用,它從C++中刪除,應該從C中刪除。 –