C 使用结构写入文件
我写了一个应该写入文件的代码,但当我执行程序时,它会显示“保存学生数据时出错”。下面是代码C 使用结构写入文件,c,file,structure,C,File,Structure,我写了一个应该写入文件的代码,但当我执行程序时,它会显示“保存学生数据时出错”。下面是代码 #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:\
#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;//onoma foithth
char姓氏;//epi8eto foithth
};
int main(){
结构学生s1;
FILE*FILE=fopen(“d:\\student.txt”,“w”);
if(file==NULL){
printf(“保存学生数据时出错”);
返回1;
}
而(1){
printf(“输入学生人数:”);
scanf(“%d”和s1.学生人数);
printf(“输入名称:”);
scanf(“%s”和&s1.name);
printf(“输入姓氏:”);
scanf(“%s”和s1.姓氏);
fprintf(文件,“%d\t%s\t%s\n”,s1.numberOfStudents,s1.name,s1.姓氏);
printf(“继续(是/否)”);
char ch=getch();
if(ch='N'| ch='N')
打破
}
fclose(文件);
返回0;
}
我已经搜索了,但找不到问题。我的错误在哪里?
名称
如果要将onoma foith
存储在结构字段中,则结构字段应为字符数组
。将您的结构修改为
typedef struct Student{
int numberOfStudents;
char name[10]; // onoma foithth
char surname; // epi8eto foithth
};
然后在扫描name
时删除&
,因为name
本身就是地址
scanf("%s",s1.name);
确保您在
fopen()
字符名中给出了正确的路径代码>->您确实意识到这只是一个字符,所以-scanf(“%s”、&s1.name)代码>将不起作用!无法打开文件“d:\student.txt”进行写入。可能是另一个程序,比如编辑器拥有它。你确定你有该目录的写权限吗?卷中的AFAIK根目录通常不可直接写入-您需要管理员。@iBug我在写入USB驱动器的根目录时从来没有遇到过问题。暂时忘记写入文件,但是您打算如何使用单个字符来存储名称?从您使用的格式说明符可以看出,您的意图非常明确,即对first和names都使用char数组C
中没有字符串。它们只是有一个字符数组,当以null结尾时,可以称之为字符串。@sjsam C标准库定义“字符串是以第一个null字符结尾并包含第一个null字符的连续字符序列。”。也许C没有另一种语言定义的字符串,但这是一个C问题。同意在C
中没有像C++
那样的string
数据类型,但在C
中,我不能说char array
是字符串,反之亦然?@chux:Aha。也许我写的第一句话有点误导。我应该写下asC并没有将string定义为类型。但问题非常清楚。@raja字符串可以是数组,也可以是数组的一部分。字符数组可以是字符串,也可以不是字符串,这取决于它的内容<代码>字符a[2]={'b','c'}
-->a
是一个char
数组,但不是字符串。