c语言的fread如何读文件和输出?

如题所述

那个人都是复制百度百科的,你追问他,他怎么可能会!首先指出程序中的几点致命错误:Infor *pq=new Infor;最起码应该是struct infor *pq=new Infor;你的有语法错误。Infor a=new Infor;
也应该是struct infor *a=new Infor;你的类型都不对。更可怕的是,你竟然不释放空间,没有delete,那么你程序运行一次,内存就丢失一部分,我们叫他内存泄漏。 你的程序为什么是乱码,又不能读到数据,原因是fread(void *ptr, int size, int nitems, FILE *stream);
是从stream这个文件流中,读取nitems次,每次size大小的数据,放到ptr所指向的地址空间。fwrite也是同理。而你的fwrite(pq,sizeof(pq),1,fp);读取1次没有错,但是sizeof(pq),你知道返回什么吗?pq是个指针,大小是4字节,和你的数据完全没有关系。就算你改成fwrite(pq,sizeof(*pq),1,fp);也不对,因为sizeof(*pq),返回的是整个结构体的大小,结构体内部的数据成员,在地址空间上是连续排列的没错,但是,为了寻址方便,有的情况会用空白数据来填充,以达到整除的目的。比如说: struct stru {int a;char b;int c;};这其中,a占4个字节,b也占4个字节,c也占4个字节,虽然b到c的空间中只要1个字节就可以表示char类型。 你的程序应该改为fwrite(&(pq->month),sizeof(pq->month),1,fp);............ //其他的数据读入,分开依次读写的时候也是同理。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-25
功 能: 从一个流中读数据
用 法: int fread(void *ptr, int size, int nitems, FILE *stream);
程序例:

#include <string.h>
#include <stdio.h>

int main(void)
{
FILE *stream;
char msg[] = "this is a test";
char buf[20];

if ((stream = fopen("DUMMY.FIL", "w+"))
== NULL)
{
fprintf(stderr,
"Cannot open output file./n");
return 1;
}

/* write some data to the file */
fwrite(msg, strlen(msg)+1, 1, stream);

/* seek to the beginning of the file */
fseek(stream, SEEK_SET, 0);

/* read the data and display it */
fread(buf, strlen(msg)+1, 1, stream);
printf("%s/n", buf);

fclose(stream);
return 0;
}

c语言中fread函数怎么用
在C语言中,fread函数扮演着至关重要的角色,用于从文件或其他输入流中读取数据。这个函数的使用方法如下:它接受五个参数,分别为指向要读取数据的内存地址(void* buffer),每个数据对象的大小(size_t size,以字节为单位),要读取的对象数量(size_t count),以及文件指针(FILE* stream)。通过调...

C语言:文件操作( fread 函数 )
C语言中的文件操作, fread函数是一个关键工具,用于从文件中读取数据到内存缓冲区。它的主要作用是读取指定数量的字节到指定的缓冲区,参数包括目标缓冲区(buffer)、每个基本单元的字节数(size)、需要读取的基本单元数量(count)、指向文件的指针(stream),返回实际读取的基本单元个数。在处理大文件...

C语言fread函数怎么用啊?为什么我写出来输出数据不对,
C语言中:fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。函数原型:size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;参数:buffer 用于接收数据的内存地址s...

fread是什么意思?
fread是C语言中的文件读取函数,其作用是将二进制文件中的数据读入到内存中。fread函数有四个参数:第一个参数是用于接收数据的内存地址;第二个参数是每次读取的字节数;第三个参数是要读取的数据块数目;第四个参数是文件指针。fread函数返回值为实际读取的数据块数目。如何使用fread函数?使用fread函数...

程序员的自我修养: fread-C语言是怎样读取文件的
fread的调用过程大概是:fread -> fread_s(增加缓冲溢出保护, 加锁) -> _fread_nolock_s(循环读取,缓冲) -> _read(换行符转换) -> ReadFile(读取文件) 加注释的FILE结构如下:struct _iobuf { char *_ptr; int _cnt; \/\/剩余未读的字节数 char *_base; \/\/文件的缓冲基址 int _flag;...

c语言的fread如何读文件和输出?
也应该是struct infor *a=new Infor;你的类型都不对。更可怕的是,你竟然不释放空间,没有delete,那么你程序运行一次,内存就丢失一部分,我们叫他内存泄漏。 你的程序为什么是乱码,又不能读到数据,原因是fread(void *ptr, int size, int nitems, FILE *stream);是从stream这个文件流中,读取n...

C语言 用fread读文件的大小
使用fseek(fh, 0, SEEK_END)到文件末尾,然后调用ftell(fh),得到的就是文件大小。

C语言求助,fread,总是多输出一行数据
C 语言读文件是初学者最容易犯的一个错误,正确的方式是先读,再判断 feof, 正确的读文件方式如下:while (1){ fread(&data, N, 1, fp); if (feof(fp) { break; } printf(...);}

c语言文件操作fwrite和fread
fread是C语言标准为中的一个函数。它从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。fwrite是C语言标准库中的一个函数,指向文件写入一个数据块。示例如下:\/\/读取一个完整的文件#include <stdio.h>#include ...

c语言中fread函数怎么用
c语言中fread函数语法为size_t fread( void *restrict buffer, size_t size, size_t count, FILE *restrict stream )。buffer是指向要读取的数组中首个对象的指针,size是每个对象的大小(单位是字节),count是要读取的对象个数,stream是输入流。通过fread函数可进行数据读取,返回成功读取的对象个数...

相似回答
大家正在搜