У меня есть структура со многими массивами символов, как это (и это работает):
struct maytinh {
char tenmay[10];
char mamay[10];
char test[10];
float manhinh;
int gia;
};
Но если это так,
struct maytinh {
char tenmay[99];
char mamay[99];
char test[99];
float manhinh;
int gia;
};
, он ломается, когда я компилирую и сканируюданные в. Более того, когда я помещаю другой массив в структуру, он также ломается:
struct maytinh {
char tenmay[10];
char mamay[10];
char test[10];
char test2[10];
float manhinh;
int gia;
};
Почему?(Я компилирую с c-free 4.0)
Вот код scanf:
void main() {
int n,i;
printf("input :");
scanf("%d",&n);
struct maytinh a[n];
for (i=1;i<=n;i++) {
printf("May tinh so: %d\n",i);
printf("Nhap ten may :");
scanf("%s",a[i].tenmay);
printf("Nhap ma may :");
scanf("%s",a[i].mamay);
printf("Nhap test :");
scanf("%s",a[i].test);
printf("Nhap kich thuoc man hinh:");
scanf("%d",&a[i].gia);
};
}
этот код полностью работает с первой структурой.Вот мое исправление для массива структуры динамического размера с помощью malloc () и typedef (только для таких, как я, нуждающихся):
typedef struct maytinh {
char tenmay[99];
char mamay[99];
char test[99];
char test3[99];
float manhinh;
int gia;
};
void main(){
int n,i;
printf("input :");
scanf("%d",&n);
maytinh *a;
a=(maytinh*)malloc(n*sizeof(maytinh));
for (i=0;i<=n;i++) {
printf("May tinh so: %d\n",i);
printf("Nhap ten may :");
scanf("%s",a[i].tenmay);
printf("Nhap ma may :");
scanf("%s",a[i].mamay);
printf("Nhap test :");
scanf("%s",a[i].test);
printf("Nhap kich thuoc man hinh:");
scanf("%d",&a[i].gia);
};
}