c语言fread读取文件(c语言fread读取文件失败)

2024-06-13 10:38:57 10

c语言fread读取文件(c语言fread读取文件失败)

本文目录

c语言fread读取文件失败

这种文本文件一般用不着使用二进制读写

在用二进制读写时需要注意,文本文件中有看不见的字符,比如换行符,在读取时必须考虑它们占用的字符。建议:

char buffer;if ( pFd=fopen("/20190124.txt","r") ) {  if ( !feof(pFd) ) {    fgets(buffer,255,pFd); sscanf(buffer,"%s",version);    fgets(buffer,255,pFd); sscanf(buffer,"%lf%lf",&dLon,&dLat);    fgets(buffer,255,pFd); sscanf(buffer,"%d",&Num);    printf...  }  fclose(pFd);} else { printf("Open file failed\n"); return -1; }

c语言循环中fread如何读取文件

#include 《stdio.h》#include 《stdlib.h》int main(){    int number,i;    FILE *fp;    fp=fopen("number.dat","r");    for(i=0;i《400;i+=100)        fread(number+i,sizeof(int),100,fp);}

C语言fread函数读取文件问题

fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。函数原型size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;参 数buffer用于接收数据的内存地址size要读的每个数据项的字节数,单位是字节count要读count个数据项,每个数据项size个字节.stream输入流返回值实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。

C语言如何读取文件

文件流指针应打文件,要同操作两文件,所要用两文件流指针,像要同操作两箱.程序理解:两箱,fp1,fp2;打箱fp1,fp2,拿1024东西看,同放第二箱fp2,至箱东西完全拿,关闭两箱.例都差,看看stdlibf函数,C文件操作:FILL*pf;//声明指针,指针数组FILEpf或FILE**pf;pf=fopen();fread()orfwrite()......//操作文件fclose(pf)//关闭文件

标准C语言中如何一次读取某文件中的多行数据

有很多种方式可以一次性读取多行数据,具体如何使用,取决于文件内容格式。

一、以fscanf读取。

fscanf读取时,默认会到空白字符截止。所以如果文件中不存在其它空白字符,那么可以以fscanf实现一次性读取多行的效果,比如文件中存储为

12.3name

那么要一次性读取这三行数据,可以使用:

int a;float b;char c;fscanf(fp, "%d%f%s",&a,&b,c);

其中,fp为打开该文件的文件指针, 分别将三行数据读取到三个变量a b c中。 

二、以fread读取。 

fread可以一次性读取若干个数据块,所以如果要读取的文件内容总长度已知,那么可以通过fread一次性读取多行。如

this isformy testonly.

以上数据分4行,包括换行符在内共计25字节。

此时可以使用如下代码一次性读取四行:

char buf;fread(buf, 25, 1, fp);

其中fp为打开该文件的文件指针。

c语言如何从文件读入,并存放在链表中

//举个单链表的例子,首先定义链表成员的结构体 

struct filetext{char buf;

struct filetext *next;};

//读取文件,并插入进链表的函数,filename为要读取的文件名,head为链表的头节点,函数返回插入新节点后链表的头节点

struct filetext * readfile(char * filename,struct filetext * head)

{ struct filetext * new = (struct filetext *)malloc(sizeof(struct filetext));//定义一个新成员,并给它分配空间

FILE * fp;//读取文件的文件流

struct filetext * p =head;//定义一个p,用来寻找链表中最后一个节点

if((fp=(fopen(filename,"r+")))==NULL)

{//如果打开文件失败,返回head,并提示

printf("open file failure");

return head; }

//然后开始读取文件,放到new的buf中

if(fread(new-》buf,BUFSIZE,1,fp)《1)

{ //如果读取失败,提示,并返回head

printf("read file failure");

return head; }

fclose(fp);

//文件读取完后,进行链表操作

if(!head)//如果传进来的head是个空指针,那么新指针就作为头节点返回

{ new-》next = NULL;

return new; }

while(p-》next) p = p-》next;//把p移动到最后一个节点

p-》next = new;//p的下一个节点为new

new-》next = NULL;//new的下一个节点为空

return head;

//这样这个函数就完成了,你可以写个主函数,定义一个头节点,试下。

扩展资料:

线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。

因此,为了表示每个数据元素 与其直接后继数据元素 之间的逻辑关系,对数据元素 来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。由这两部分信息组成一个"结点"(如概述旁的图所示),表示线性表中一个数据元素。

线性表的链式存储表示,有一个缺点就是要找一个数,必须要从头开始找起,十分麻烦。根据情况,也可以自己设计链表的其它扩展。但是一般不会在边上附加数据,因为链表的点和边基本上是一一对应的(除了第一个或者最后一个节点,但是也不会产生特殊情况)。

不过有一个特例是如果链表支持在链表的一段中把前和后指针反向,反向标记加在边上可能会更方便。

C语言fread()函数读取出问题,求大神解答

fread() 用于2进制文件的读。被读的文件应当是2进制文件,并且是用 fwrite() 写成的。文件打开 必须 用到 "b" (2进制) -- "rb" "wb" .... 又读又写文件,注意文件指针位置的控制,般动,回绕文件等等,并保证文件及时写出(调 fflush() )。分别读,写文件,注意文件 关闭,文件打开的顺序。

程序员的自我修养: fread-C语言是怎样读取文件的

为了效率的考虑,不至于频繁调用系统函数和访问IO设备,MSVC CRT的fread采用缓冲设计. C语言提供的关于缓冲的函数有:int flush(FILE* stream); int setvbuf(FILE* stream, char* buf, int mode, size_t size); /* 缓冲模式mode有: 1. 无缓冲模式 _IONBF 2. 行缓冲模式 _IOLBF 每收到一个换行符(/n或/r/n), 就将缓冲flush掉 3. 全缓冲模式 _IOFBF 仅当缓冲满时才进行flush */ void setbuf(FILE* stream, char* buf); 等价于 (void)setvbuf(stream, buf, _IOBBF, BUFSIZ); fread的调用过程大概是:fread -》 fread_s(增加缓冲溢出保护, 加锁) -》 _fread_nolock_s(循环读取,缓冲) -》 _read(换行符转换) -》 ReadFile(读取文件) 加注释的FILE结构如下:struct _iobuf { char *_ptr; int _cnt; //剩余未读的字节数 char *_base; //文件的缓冲基址 int _flag; //打开文件的属性 int _file; //打开文件的编号 int _charbuf; int _bufsiz; //文件的缓冲的总的大小 char *_tmpfname; }; typedef struct _iobuf FILE; 核心函数_fread_nolock_s(循环读取,缓冲)如下:size_t __cdecl _fread_nolock_s( void *buffer, size_t bufferSize, size_t elementSize, size_t num, FILE *stream ) { char *data; /* point inside the destination buffer to where we need to copy the read chars */当前放进字节的尾部 size_t dataSize; /* space left in the destionation buffer (in bytes) //buffer中剩余字节数*/ size_t total; /* total bytes to read //总共要读的字节数*/ size_t count; /* num bytes left to read //剩下要读的字节数*/ unsigned streambufsize; /* size of stream buffer */ unsigned nbytes; /* how much to read now */ unsigned nread; /* how much we did read */ int c; /* a temp char */ /* initialize local vars */ data = buffer; dataSize = bufferSize; if (elementSize == 0 || num == 0) { return 0; } /* validation */ _VALIDATE_RETURN((buffer != NULL), EINVAL, 0); if (stream == NULL || num 》 (SIZE_MAX / elementSize)) { if (bufferSize != SIZE_MAX) { memset(buffer, _BUFFER_FILL_PATTERN, bufferSize); } _VALIDATE_RETURN((stream != NULL), EINVAL, 0); _VALIDATE_RETURN(num 《= (SIZE_MAX / elementSize), EINVAL, 0); } count = total = elementSize * num; if (anybuf(stream)) { /* already has buffer, use its size */ streambufsize = stream-》_bufsiz; } else { /* assume will get _INTERNAL_BUFSIZ buffer */ streambufsize = _INTERNAL_BUFSIZ; } /* here is the main loop -- we go through here until we’re done */ while (count != 0) { /* if the buffer exists and has characters, copy them to user buffer */ if (anybuf(stream) && stream-》_cnt != 0) { if(stream-》_cnt 《 0) { _ASSERTE(("Inconsistent Stream Count. Flush between consecutive read and write", stream-》_cnt 》= 0)); stream-》_flag |= _IOERR; return (total - count) / elementSize; } /* how much do we want? (unsigned)count : stream-》_cnt; if (nbytes 》 dataSize) { if (bufferSize != SIZE_MAX) { memset(buffer, _BUFFER_FILL_PATTERN, bufferSize); } _VALIDATE_RETURN(("buffer too small", 0), ERANGE, 0) } memcpy_s(data, dataSize, stream-》_ptr, nbytes); /* update stream and amt of data read */ count -= nbytes; stream-》_cnt -= nbytes; stream-》_ptr += nbytes; data += nbytes; dataSize -= nbytes; } else if (count 》= streambufsize) { /* If we have more than streambufsize chars to read, get data by calling read with an integral number of bufsiz blocks. Note that if the stream is text mode, read will return less chars than we ordered. */ if (streambufsize) { /* In 64bit apps size_t is bigger than unsigned * (which is 32bit even in 64 bit machines), so * we need to split the read into INT_MAX chunks * since _read() only support up to _signed_ int * (even though the in parameter is unsigned). */ if (count 》 INT_MAX) { /* calc chars to read -- the largest multiple of streambufsize * smaller then INT_MAX */ nbytes = (unsigned)(INT_MAX - INT_MAX % streambufsize); } else { /* calc chars to read -- (count/streambufsize) * streambufsize */ nbytes = (unsigned)(count - count % streambufsize); } } else { nbytes = (count 》 INT_MAX)?(unsigned)INT_MAX: (unsigned)count; } if (nbytes 》 dataSize) { if (bufferSize != SIZE_MAX) { memset(buffer, _BUFFER_FILL_PATTERN, bufferSize); } _VALIDATE_RETURN(("buffer too small", 0), ERANGE, 0) } nread = _read(_fileno(stream), data, nbytes); if (nread == 0) { /* end of file -- out of here */ stream-》_flag |= _IOEOF; return (total - count) / elementSize; } else if (nread == (unsigned)-1) { /* error -- out of here */ stream-》_flag |= _IOERR; return (total - count) / elementSize; } /* update count and data to reflect read */ count -= nread; data += nread; dataSize -= nread; } else { /* less than streambufsize chars to read, so call _filbuf to fill buffer */ if ((c = _filbuf(stream)) == EOF) { /* error or eof, stream flags set by _filbuf */ return (total - count) / elementSize; } /* _filbuf returned a char -- store it */ if (dataSize == 0) { if (bufferSize != SIZE_MAX) { memset(buffer, _BUFFER_FILL_PATTERN, bufferSize); } _VALIDATE_RETURN(("buffer too small", 0), ERANGE, 0) } *data++ = (char) c; --count; --dataSize; /* update buffer size */ streambufsize = stream-》_bufsiz; } } /* we finished successfully, so just return num */ return num; } 其中,int __cdecl _filwbuf ( FILE *str ) #endif /* _UNICODE */ { REG1 FILE *stream=NULL; /* In safecrt, we assume we always have a buffer */ _VALIDATE_RETURN(str != NULL, EINVAL, _TEOF); /* Init pointer to _iob2 entry. */ stream = str; if (!inuse(stream) || stream-》_flag & _IOSTRG) return(_TEOF); if (stream-》_flag & _IOWRT) { stream-》_flag |= _IOERR; return(_TEOF); } stream-》_flag |= _IOREAD; /* Get a buffer, if necessary. */ if (!anybuf(stream)) { #ifndef _SAFECRT_IMPL _getbuf(stream); #else /* _SAFECRT_IMPL */ /* In safecrt, we assume we always have a buffer */ _VALIDATE_RETURN(FALSE, EINVAL, _TEOF); #endif /* _SAFECRT_IMPL */ } else { stream-》_ptr = stream-》_base; } stream-》_cnt = _read(_fileno(stream), stream-》_base, stream-》_bufsiz); #ifndef _UNICODE if ((stream-》_cnt == 0) || (stream-》_cnt == -1)) { #else /* _UNICODE */ if ((stream-》_cnt == 0) || (stream-》_cnt == 1) || stream-》_cnt == -1) { #endif /* _UNICODE */ stream-》_flag |= stream-》_cnt ? _IOERR : _IOEOF; stream-》_cnt = 0; return(_TEOF); } if ( !(stream-》_flag & (_IOWRT|_IORW)) && ((_osfile_safe(_fileno(stream)) & (FTEXT|FEOFLAG)) == (FTEXT|FEOFLAG)) ) stream-》_flag |= _IOCTRLZ; /* Check for small _bufsiz (_SMALL_BUFSIZ). If it is small and if it is our buffer, then this must be the first _filbuf after an fseek on a read-access-only stream. Restore _bufsiz to its larger value (_INTERNAL_BUFSIZ) so that the next _filbuf call, if one is made, will fill the whole buffer. */ if ( (stream-》_bufsiz == _SMALL_BUFSIZ) && (stream-》_flag & _IOMYBUF) && !(stream-》_flag & _IOSETVBUF) ) { stream-》_bufsiz = _INTERNAL_BUFSIZ; } #ifndef _UNICODE stream-》_cnt--; return(0xff & *stream-》_ptr++); #else /* _UNICODE */ stream-》_cnt -= sizeof(wchar_t); return (0xffff & *((wchar_t *)(stream-》_ptr))++); #endif /* _UNICODE */ } 代码中分了三种情况:1) 缓冲区不为空此时, 把缓冲区中的数据复制到传入的字符数组中. 2) 缓冲区为空, 需要读取的数据大于缓冲的尺寸此时, 直接调用函数_fread把文件中的内容写到传入的字符数组中. 3) 缓冲区为空, 需要读取的数据不大于缓冲的尺寸此时, 调用函数_fread读满缓冲区, 并再写缓冲区的一个字符到传入的字符数组中. 若未读满传入的字符数组, 循环执行上述1~3过程, 直到读满或读到文件末尾(EOF).

c语言fread读取文件(c语言fread读取文件失败)

本文编辑:admin

更多文章:


cssfloat样式(为什么在CSS样式里设置了float为left还是跑到右边去了咧)

cssfloat样式(为什么在CSS样式里设置了float为left还是跑到右边去了咧)

本文目录为什么在CSS样式里设置了float为left还是跑到右边去了咧求解CSS样式中float属性的问题如何覆盖css的float样式为什么在CSS样式里设置了float为left还是跑到右边去了咧前面没清除浮动导致的当父盒子剩余的宽度

2024年5月9日 13:35

绿松石的14种颜色(绿松石颜色等级划分)

绿松石的14种颜色(绿松石颜色等级划分)

“绿松石的14种颜色”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看绿松石的14种颜色(绿松石颜色等级划分)!本文目录绿松石颜色等级划分绿松石颜色多样化绿松石颜色松石都有什么颜色绿松石什么颜色最好是否上品一眼就知绿松石有几种

2024年10月12日 13:35

在线sql注入测试网站(哪些工具可以用来测试sql注入漏洞)

在线sql注入测试网站(哪些工具可以用来测试sql注入漏洞)

其实在线sql注入测试网站的问题并不复杂,但是又很多的朋友都不太了解哪些工具可以用来测试sql注入漏洞,因此呢,今天小编就来为大家分享在线sql注入测试网站的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录哪些工具

2024年7月6日 18:48

computer room(Computer Room是什么意思)

computer room(Computer Room是什么意思)

本文目录Computer Room是什么意思computer room 的中文Computer Room是什么意思computer room计算机机房; 例句:1.I made them on a macintosh in the com

2024年1月8日 04:00

paddingbottom(android:paddingBottom 是什么意思)

paddingbottom(android:paddingBottom 是什么意思)

本文目录android:paddingBottom 是什么意思android:paddingBottom=“1dip“什么意思android:paddingBottom 是什么意思paddingBottom 是指控件中内容距离控件底边距离。

2024年7月2日 12:43

会计培训机构(最靠谱的会计培训机构是哪里)

会计培训机构(最靠谱的会计培训机构是哪里)

本文目录最靠谱的会计培训机构是哪里会计培训班有用吗全国会计培训学校排名学会计哪个培训机构比较正规注册会计师培训机构,哪家厉害我想学会计,去那个培训机构好一些注册会计哪家培训机构好最靠谱的会计培训机构是哪里想找靠谱的机构,当然要找在业内知名的

2023年11月4日 09:20

python编程例子输入输出(在python中,怎样接受输入的数据,用a表示,输出a=输入)

python编程例子输入输出(在python中,怎样接受输入的数据,用a表示,输出a=输入)

各位老铁们,大家好,今天由我来为大家分享python编程例子输入输出,以及在python中,怎样接受输入的数据,用a表示,输出a=输入的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢

2024年9月7日 01:25

王者荣耀空格代码(王者荣耀名字空白代码怎么设置)

王者荣耀空格代码(王者荣耀名字空白代码怎么设置)

本文目录王者荣耀名字空白代码怎么设置王者荣耀空白符号王者荣耀空白名字代码王者荣耀空格代码怎么打王者荣耀名字空白代码怎么设置王者荣耀名字空白代码的设置难度不算太高,详细的流程是:1、新手可以直接取名,反之可以通过改名卡修改,改一次名后需要三天

2024年6月29日 00:19

室内设计网站(有哪个网站可以自学室内设计)

室内设计网站(有哪个网站可以自学室内设计)

本文目录有哪个网站可以自学室内设计国外有哪些室内设计的网站室内设计师经常上的网站有哪些有哪些全是图片的室内设计网站有哪个网站可以自学室内设计学室内设计的网站有很多,但是如果真的想学好室内设计,还是建议选择一个口碑好、专业性强的培训学校进行学

2023年12月8日 08:00

alert的使用方法?Alert是什么意思

alert的使用方法?Alert是什么意思

本文目录alert的使用方法Alert是什么意思alert怎么读alert什么意思中文js alert()函数为什么会弹出框javascript中alert函数和document.write的区别alert是什么函数ie浏览器alert显示

2024年6月9日 13:43

vfp中sql语句大全(vfp中 SQL语句)

vfp中sql语句大全(vfp中 SQL语句)

“vfp中sql语句大全”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看vfp中sql语句大全(vfp中 SQL语句)!本文目录vfp中 SQL语句VFP SQL语句求解VFP 中的 SELECT SQL 语句关于VFP中,

2024年8月22日 14:55

乌克兰最新局势(乌克兰局势为何会恶化)

乌克兰最新局势(乌克兰局势为何会恶化)

本文目录乌克兰局势为何会恶化泽连斯基称西方正进行外交总动员,目前乌克兰当地局势如何为什么乌克兰局势这么严峻了呢乌克兰局势会给全球局势带来怎样的影响为什么乌克兰局势走到这一步乌克兰局势为何会恶化4月29日召开的中央政治局会议,分析了当前的经济

2024年6月7日 12:37

sado是什么意思什么单词缩写?字母圈五种属性sado是什么

sado是什么意思什么单词缩写?字母圈五种属性sado是什么

本文目录sado是什么意思什么单词缩写字母圈五种属性sado是什么sado是什么属性字母圈里sado是什么属性sado是什么意思sado是什么意思什么单词缩写sado,读音:英 ,意思是:茶道,就是品赏茶的美感之道。茶道文化起源于中国,南宋

2024年7月17日 12:41

switch case对下面的case+1(case1:a+=1是什么意思)

switch case对下面的case+1(case1:a+=1是什么意思)

本文目录case1:a+=1是什么意思int x=1,a=0,b=0;switch (x){case 0:b++;case 1:a++;case 2:a++;b++;} printf(“%d,%d“,a,b);switch 语句case执行

2024年6月19日 18:10

oracle数据库恢复到某个时间点(如何恢复数据库到某一时间点的数据)

oracle数据库恢复到某个时间点(如何恢复数据库到某一时间点的数据)

本文目录如何恢复数据库到某一时间点的数据根据备份文件和 oplog恢复数据到某个时间点,为什么报不能恢复oracle rac怎么实现任意时间点的恢复如何恢复数据库到某一时间点的数据恢复数据库到之前的某个时间点,必须要有日志备份。下面是一个使

2024年7月21日 09:19

制表格视频教程(用电脑怎样制表格视频)

制表格视频教程(用电脑怎样制表格视频)

本文目录用电脑怎样制表格视频wps怎样做表格视频教程制表的步骤初学者视频教程用电脑怎样制表格视频在日常工作中,我们经常要做各种各样的表格,有时用 Word 做表格,可大多时候,用 Word 做表格调整太麻烦,不如用电子表格Excel 快,

2024年6月29日 16:57

result怎么写(英文论文result怎么写)

result怎么写(英文论文result怎么写)

本文目录英文论文result怎么写java中result是什么意思result的同义词是什么result 和 as for 的用法论文里面的“result“和“conclusion“的区别是什么请问英语动词‘导致’‘造成’‘致使’各怎么写结

2024年7月18日 04:53

mysql5安装及配置超详细教程(怎样在windows下安装MySQL5.0)

mysql5安装及配置超详细教程(怎样在windows下安装MySQL5.0)

本文目录怎样在windows下安装MySQL5.0mysql 5.x数据库怎么安装怎样在windows下安装MySQL5.0首先要下载好安装包mysql5.msi,双击“mysql5.msi”,进入MySQL安装界面,如图2 选择安装类型,

2024年7月2日 01:34

setinterval的含义(window.setInterval();什么意思)

setinterval的含义(window.setInterval();什么意思)

本文目录window.setInterval();什么意思javascript中self.setInterval是什么意思setTimeout()和setInterval()方法的区别setTimeout,setInterval计时器不准的

2024年7月22日 03:09

bios怎么进入(电脑怎么进bios系统)

bios怎么进入(电脑怎么进bios系统)

“bios怎么进入”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看bios怎么进入(电脑怎么进bios系统)!本文目录电脑怎么进bios系统怎么进入bios设置电脑怎么进入bios电脑怎么进入bios界面主板bios怎么进去

2024年7月1日 19:35

近期文章

halloween(halloween怎么读)
2024-10-22 23:45:43
本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1735
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索