typedef struct s{
char *name;
}student;
/*将结构体读出并显示*/
int IsUsed(char *str)
{
FILE *fp = fopen("test","rb");
student s;
s.name = (char*) malloc(sizeof(char)*20);
fread(&s,sizeof(student),1,fp);
while(!feof(fp)){
printf("%s",s.name); //为什么这里出错??????????????????
if(strcmp(s.name,str)==0){
fclose(fp);
return 1; //存在该字符串,则返回1
}
fread(&s,sizeof(student),1,fp);
}
fclose(fp);
return 0; //不存在该字符串,则返回0
}
int main()
{
FILE *fp = fopen("test","rb+");
/*先将结构体P存入二进制文件中*/
student p;
p.name = (char*) malloc(sizeof(char)*20);
scanf("%s",p.name);
while(IsUsed(p.name)){ //检查员工号是否唯一
printf("该字符串已经存在,请更换一个:");
scanf("%s",p.name);
}
fwrite(&p,sizeof(student),1,fp);
}
p.name不行啊、我就是按照结构体存的文件、如果机构体有多个元素,肯定就不ok了、
追答哦,你malloc了以后没有memset,先memset然后再fread改成s.name试试。
c语言中怎么把一个结构体数组写入文件
1、以二进制读方式(rb)打开文件 2、调用读文件函数fread()读取文件中的数据到结构体变量 3、关闭文件指针 参考代码如下:include<stdio.h>struct stu {char name[30];int age;double score;};int read_file();int write_file();int main(){if ( write_file() < 0 ) \/\/将结构体数据写入...
C语言文件读写结构体里面的数据怎样存到磁盘文件上
需要注意一点,当结构体中有指针类型时,所有指针不可以直接写入,而是要依照每个指针展开写入,即写入指针指向的地址内容,而不是写入指针本身的值。这种情况下,读取的时候也需要重新分配指针,并读取对应的数据。2 以文本方式写入。通过fprintf函数,对每个值以可读的方式,格式化输出到文本文件中。类似于p...
C语言读写二进制文件与数据类型有什么关系?
不管是文本文件还是二进制,最终存到硬盘中都是二进制的,只不过在读的时候处理不一样,比如已写入一个字符串,那就得已字符串进行处理,如果写入的是一个int,或者double,就用int或者double类型处理。
在C语言中文件有几种操作类型
主要是两种文件类型:1)文本文件,2)二进制文件。一般来说,人类可读的文件都作为文本文件,例如一片文章。其余都作为二进制文件,例如一个程序。在C语言中,文件的操作是通过FILE结构体进行了,利用fopen返回一个指向FILE结构体的指针,在使用fopen函数过程中,使用mode控制符对是否打开哪类文件进行控制:...
C语言教程第8天,读写文件
对于大文件或二进制文件的读取,可以使用fread,它以更精确的字节为单位进行读取。写入文件则常用fprintf、fwrite和fputs,如:int fprintf(FILE *stream, const char *format, ...);和 size_t fwrite(const void *restrict ptr, size_t size, size_t count, FILE *restrict stream);最后,结构化数...
2018年计算机二级考试《C语言》考点:文件
2018年计算机二级考试《C语言》考点:文件 【考点1】文件类型指针 文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件时,都需要先定义文件指针。【考点2】文本文件与二进制文件 文本形式存放的是字符的ASCII码,二进制形式存放的是数据的二进制。例如“100”如果是文本形式就...
C语言详解 FILE文件操作
读取字符串使用fgets()函数,从文件读入指定字符数量的字符串,读取结束位置添加'\\0',用于字符串结束标记。写入字符串使用fputs()函数,将字符串输出至指定文件。读写数据块使用fread()和fwrite()函数,一次读写一组数据,适用于数组、结构体等。二进制文件操作以数据块形式进行读写,使用fread()和...
c语言可以处理的文件类型是
c语言可以处理的文件类型是文本文件和二进制文件。在C语言中,文件的操作是通过FILE结构体进行了,利用fopen返回一个指向FILE结构体的指针,在使用fopen函数过程中,使用mode控制符对是否打开哪类文件进行控制。C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标...
C语言 从一个二进制文件里读取一个结构体时出现如图的显示(我先前已经...
1、程序出现死循环了,文件运行成功了,但是所有属性都是0或者空,检查一下是不是再写循环代码的时候那个值的属性或者条件写错了,导致出现了死循环;2、看一下主键是不是调用数据里面填写正确,或者在带入的时候是不是单次书写正确,C语言需要区分大小写,如果不区分大小写系统不识别;3、程序使用调用...
c语言如何创建文件并将结构体数据存进去
c语言如何创建文件并将结构体数据存进去?需要使用文件操作函数fwrite和fread。 读物文件并写入结构体,同时保存文件的代码如下:1、写 FILE* fp = fopen("card.dat