我的代码崩溃了, 你能告诉我我做错了什么吗? 如果我隔离代码的FILE部分它不会崩溃
#include <stdio.h>
#include <stdlib.h>
struct student
{
char* name;
char* dorm;
};
#define NUM 3
int main()
{
struct student students[NUM];
int i=0;
for(i=0;i<NUM;i++)
{
char* naam;
char* daarm;
printf("Insert name of student #%d..\n",i+1);
scanf("%s",&naam);
students[i].name=naam;
printf("Now enter name of the dorm\n");
scanf("%s",&daarm);
students[i].dorm= daarm;
}
FILE* file=fopen("C:/Users/Gigg/Desktop/ricchio.txt","w");
if(file!=NULL)
{
int i;
for(i=0;i<NUM;i++)
{
fprintf(file,"%s,%s",students[i].name,students[i].dorm);
}
}
fclose(file);
return 0;
}
我无法在任何地方找到答案, 此外, 编译器还告诉我%s期待char *但是我给它char
答案 0 :(得分:2)
请尝试以下操作。
问题
注意:如果无法打开文件,请添加错误消息。应该改进大小的内存。处理冗长的用户输入。
请参阅我的'注意事项。
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>
struct student
{
char name[1024]; // **NOTE**: magic number
char dorm[1024]; // **NOTE**: magic number
};
#define NUM 3
int main()
{
struct student students[NUM];
int i=0;
for(i=0;i<NUM;i++)
{
char naam[1024]; // **NOTE**: magic number
bzero(naam, sizeof(naam));
char daarm[1024]; // **NOTE**: magic number
bzero(daarm, sizeof(daarm));
printf("Insert name of student #%d..\n",i+1);
scanf("%s",naam); // **NOTE**: input length
strcpy(students[i].name,naam);
printf("Now enter name of the dorm\n");
scanf("%s",daarm); // **NOTE**: input length
strcpy(students[i].dorm,daarm);
}
FILE* file=fopen("/tmp/test.txt",
"w");
if(file!=NULL)
{
int i;
for(i=0;i<NUM;i++)
{
fprintf(file,"%s,%s\n",students[i].name,students[i].dorm);
}
fclose(file); // **NOTE** should only be done if non-zero value.
} else { // NOTE: error!!!
}
return 0;
}