【发布时间】:2018-01-13 12:03:21
【问题描述】:
我写了一个应该写入文件的代码,但是当我执行程序时它显示“保存学生数据时出错”。这是代码。
#include<stdio.h>
typedef struct Student{
int numberOfStudents;
char name; // onoma foithth
char surname; // epi8eto foithth
};
int main(){
struct Student s1;
FILE *file=fopen("d:\\student.txt","w");
if(file==NULL){
printf("error in saving student data");
return 1;
}
while(1){
printf("Enter number of students: ");
scanf("%d",&s1.numberOfStudents);
printf("enter name: ");
scanf("%s",&s1.name);
printf("enter surname: ");
scanf("%s",&s1.surname);
fprintf(file,"%d\t%s\t%s\n",s1.numberOfStudents,s1.name,s1.surname);
printf("continue (Y/N)");
char ch=getch();
if (ch=='N' || ch=='n')
break;
}
fclose(file);
return 0;
}
我已经搜索了,但我找不到问题。我的错误在哪里?
【问题讨论】:
-
char name;-> 你知道这只是一个字符,所以 -scanf("%s",&s1.name);不起作用! -
无法打开文件“d:\student.txt”进行写入。也许另一个程序,如编辑拥有它。
-
你确定你对该目录有写权限吗?卷中的 AFAIK 根目录通常不可直接写入 - 您需要管理员。
-
@iBug 我从来没有遇到过写入 USB 驱动器根目录的问题。
-
暂时忘记写入文件,但是您打算如何使用单个字符来存储名称?从您使用的格式说明符来看,很明显您的意图很明确,即对名字和姓氏都使用 char 数组