有这么段代码
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<sys/file.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
int main(void)
{
char *buf="This is a test file to check the code about writing and reading of file stream";
char r_buf[100];
int size,i,j;
FILE *fp;
size=strlen(buf);
if((fp=fopen("/work/IO/test","r+"))==NULL)
{
perror("fopen error!!\n");
exit(1);
}
else
printf("fopen succeed!!\n");
if((i=fwrite(buf,size,1,fp))<0)
{
perror("fwrite error\n");
exit(1);
}
else printf("fwrite succeed!!\n");
if((j=fread(r_buf,100,1,fp))<=0) //fread error!!!!!
{
perror("fread error\n");
exit(1);
}
else printf("fread succeed!\nr_buf:%s\ni=%d\nj=%d\n",r_buf,i,j);
if(fclose(fp)==EOF)
{perror("fclose error!\n");
exit(1);
}
else
{printf("fclose succeed!!\n");
exit(0);
}
}
运行时屏幕上显示fread error了,那这里fread哪里错了呢??望高人指点~~
加了fseek,去掉fread语句中<=后面的“=”后,还有个问题,r_buf空间好像不够,因为读出时并不完整,且j=0,,若改100为200,读出就完整了,但j依旧为0,这是什么原因呢??再说里面的字符串怎么也不该大于100吧?麻烦各位大侠了~~~
c语言 fread的问题
001 ying 101 20 170 不能没有分隔符。(2)if((fp1=fopen("in.txt","w"))==NULL)文件用文本方式写成的 fprintf(fp1,"%s%s%s%d%d\\n",fprintf(fp1,"%s %s %s %d %d\\n",也要用空白把数据分隔开来。(3)fread(&stu[i],sizeof(struct student),1,fp1);fread 只用于 2进制方式 fwr...
C语言 文件中的fread 问题
void main(){ int n ;FILE *fp;if((fp=fopen("zifu.c","w+"))==NULL){ printf("cannot open the file\\n");exit(0);} char str[256],str1[256];gets(str);n=fprintf(fp,"%s",str);rewind(fp) ;fread(str1,sizeof(str),1,fp);str1[n] = 0 ;puts(str1);getchar() ...
C语言 fread函数的问题
首先,fread读出的信息必须是fwrite写入的信息才能保证 读出信息的正确性 所以 你要读 就会读出一个学生的信息 而且你不会读出20字节的名字 地址同理 确定结构体的大小可以用sizeof关键字 下面是fwrite fread的函数原型 size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream...
C语言中fread的一些疑问
所以当你用fread函数读取的时候,假设你在buffer位置写成s,本身语法是没有问题的,但是就相当于你把数组s的仅一个元素的数据大小当成所有s的数据存到s中,也就是没有对应起来,所以显示会是乱码。所以你可以有两种方式实现:方式一:在写的时候按一次以s的一个元素的数据大小作为一个数据块依次写进文...
c语言 fread的问题
a[i]=b;当然可以,不过用不着。struct str a[100];FILE *fp;int i=0;while(fread(a+i++,sizeof(struct str),1,fp),!feof(fp));这样就行了。
请教C语言中一个fread的问题
fread,fwrite 用于二进制文件。fopen 里要有 "b".FILE*fp1=fopen("D:\\\\1.dat","rb");FILE*fp2=fopen("D:\\\\2.dat","wb");
我想问一个关于C语言fread函数的问题:如果一个文件里有5个字符,我先用...
那要看你“动没动”这个文件的指针了,如果没有移动文件指针,而且还用这个文件指针继续读,那是顺序从第3个字符向后读,若你移动了文件指针,就从移动后的文件指针指向的地方向后读。一句话,读文件是从所用文件指针的当前位置开始依次向后读取的!
c语言中fread函数问题
又不是二进制格式,要输出二进制形式,要自己写算法.另外,这个程序有一些严重的错误,修改如下:include "stdio.h"include <conio.h>\/*用到了getch()函数*\/ void main(){ int f;FILE *fp;fp=fopen("D:\\\\1","rb");fread(&f,1,sizeof(int),fp);printf("%d",fp);getch();} ...
C语言fread函数问题
如果读取的是正确的文件(就是你先前用同样结构写了数据的那个文件),那就是对的 为了防止读错误的文件,可以在文件头加一个标志,文件头符合标志的才继续读取,否则不读,提示错误 一般可以用文件的大小来确定有多少个记录,一直读到EOF,记录读到的字节数,除以结构的字节数,得到共有多少个结构体 ...
C语言关于fread这个函数的问题
因为你的数组a没有进行正确的初始化。可以这样定义 char a[32]={0};===补充=== 哦,你的数组定义的太小了,读取的内容是32你的数组也是32,没有位置放置字符串结束符号\\0(值为0)。你把数组大小改为33就ok了