我的原程序如下:
#include<stdio.h>
#include<math.h>
struct hj
{
char dianh[10];
long int x;
long int y;
char gaoc[10];
}
main()
{
int i;
struct hj d[10];
FILE *fp;
fp=fopen("123.txt","r+");
for(i=0;i<4;i++)
{
d[i].x=0;
d[i].y=0;
fread(&d[i],20,1,fp);
printf("%s %d %d %s\n",d[i].dianh,d[i].x,d[i].y,d[i].gaoc);
printf("ok");
}
fclose(fp);
}
运行的结果不是我想要的结果,总出现一些乱码。我怀疑是文件的问题。
我文件是用excel另存为文本制表符格式的,求教各位高手,如果真是文件问题又应该怎么转换文件呢?
我用fread(&d[i],sizeof(struct hj),1,fp);也是一样的。
我的文件了内容格式为
1-21 2856591 15733334 522 m
2-23 2856564 15732844 521 m
数据读出来是乱码。
C语言fread函数读取文件问题
fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。函数原型 size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;参 数 buffer 用于接收数据的内存地址 size 要读...
C语言:文件操作( fread 函数 )
C语言中的文件操作, fread函数是一个关键工具,用于从文件中读取数据到内存缓冲区。它的主要作用是读取指定数量的字节到指定的缓冲区,参数包括目标缓冲区(buffer)、每个基本单元的字节数(size)、需要读取的基本单元数量(count)、指向文件的指针(stream),返回实际读取的基本单元个数。在处理大文件...
c语言的fread如何读文件和输出?
也应该是struct infor *a=new Infor;你的类型都不对。更可怕的是,你竟然不释放空间,没有delete,那么你程序运行一次,内存就丢失一部分,我们叫他内存泄漏。 你的程序为什么是乱码,又不能读到数据,原因是fread(void *ptr, int size, int nitems, FILE *stream);是从stream这个文件流中,读取n...
C语言fread()函数读取出问题,求大神解答
fread() 用于2进制文件的读。被读的文件应当是2进制文件,并且是用 fwrite() 写成的。文件打开 必须 用到 "b" (2进制) -- "rb" "wb" ...又读又写文件,注意文件指针位置的控制,般动,回绕文件等等,并保证文件及时写出(调 fflush() )。分别读,写文件,注意文件 关闭,文件打开的顺序。
我想问一个关于C语言fread函数的问题:如果一个文件里有5个字符,我先用...
那要看你“动没动”这个文件的指针了,如果没有移动文件指针,而且还用这个文件指针继续读,那是顺序从第3个字符向后读,若你移动了文件指针,就从移动后的文件指针指向的地方向后读。一句话,读文件是从所用文件指针的当前位置开始依次向后读取的!
c语言 fread的问题
fprintf(fp1,"%s %s %s %d %d\\n",也要用空白把数据分隔开来。(3)fread(&stu[i],sizeof(struct student),1,fp1);fread 只用于 2进制方式 fwrite 写成的文件,打开文件时要有 "rb".不能用于你上面写成的文本文件。(4) 读你fp1=fopen("in.txt","w") 写成的文件 要用 fp1=fopen("in....
C语言fread()读取文件问题
对这个是结构体,内存对齐的原因。可以为结构体中的属性一个一个的读入啊。如果.dat中是每行一个属性的话,那就可以 gets(s[0].Inhaber);
c语言,每次fread读到一半就eof,试了好多次解决不了,求大佬相助_百度知 ...
fopen() 里 要用 "rb" 模式 打开文件。用 fread() 读文件,按字节数sizeof(结构)读,你的数据文件必须是2进制文件,且通常是用 fwrite() 写成的文件。这样,你的fopen() 里 需要 用 "rb" 模式,而不是 "r"。如果你的文件是用 fprintf() 写成的,那么要用 fscanf() 读。sizeof(结构)...
C语言 用fread 读取文件的时候,只能读第一行,后面的都读不出来怎么回事...
是你多输出了'\\n'的缘故吧。解决办法:1-不写'\\n'2-读取'\\n
C语言中fread函数,当文件流缓冲中剩余长度小于需要读取的长度时的问题...
fread在fp_in缓冲区中剩余字节为0的时候才会产生一个异常让内核去处理,内核收到这个异常,就会读取文件,将fp_in的缓冲区重新填满。也就是说:如果只剩下15个了,你要读20个,那么就会先读15个到g_buffer里,然后产生一个异常,内核重新填满缓冲区,然后再从缓冲区里读5个字节。