typedef struct grades{
char s1[DIM];
char s2[DIM];
int i;
float f;
}grades;
void read(grades *s[]);
void write(grades *g[]);
int main() {
grades v[5];
read (&v);
write(&v);
return 0;
}
void read (grades *s[]){
printf("enter the name of the student number and point");
int i;
for (i=0;i<5;i ){
scanf("%s %s %d %f",s[i]->s1,s[i]->s2,s[i]->i,s[i]->f );
}
}
void write(grades *g[]){
int i;
for (i=0;i<5;i ){
printf("%s %s %d %f\n",g[i]->s1,g[i]->s2,(g[i]->i) 5,(g[i]->f) 5 );
}
在這個簡短的程式中,我想定義一個結構來獲取學生的姓名、姓氏、編號和成績。然后在他們的成績上加上 5 個成績并列印出來。當我們使用結構陣列時,當我們使用指標時,我們應該參考陣列嗎?
uj5u.com熱心網友回復:
你宣告了一個結構陣列
grades v[5];
所以在這次通話中
write(&v);
運算式&v的型別為grades ( * )[5]。此指標型別與隱式調整為 的函式引數型別不兼容grades **g。
你需要宣告像這樣的函式
void read(grades *s, size_t n);
void write( const grades *g, size_t n);
并呼叫函式
read( v, 5 );
write( v, 5 );
這個 scanf 呼叫
scanf("%s %s %d %f",s[i]->s1,s[i]->s2, s[i]->i, s[i]->f );
至少應該重寫
scanf("%s %s %d %f",s[i].s1,s[i].s2, &s[i].i, &s[i].f );
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327482.html
上一篇:我應該向這個函式發送什么引數
