底线是这样的:有一个结构:
typedef struct {
char * brand;
int year;
} vehicle;
我为它分配内存是这样的:
vehicle * car = malloc(sizeof(vehicle));
如果你这样做:
car->brand = "Dodge";
car->year = 2007;
printf("%s %d", car->brand, car->year);
一切正常,但是如果您尝试像这样从键盘输入:
printf("\nВведите марку авто: ");
scanf("%s", car->brand);
printf("\nВведите год выпуска авто: ");
scanf("%d", &car->year);
那将是
Segmentation fault: 11
输入字符串后。
我只是在学习,请不要着急,因为到目前为止我都懂指针。
您正在某处阅读内存中某个不确定的位置...
您需要提前分配空间 - 或者,例如,
或动态分配 -
很明显,我取了50“从天花板上”,你必须取合理的值,并保证读行时没有缓冲区溢出。所以最好使用该函数
fgets,特别是因为它读取任何行 - 包括您的输入法不提供的空格。