用c语言向一txt文件写入内容后将该写入的内容从txt输出到屏幕上,错在哪?

如题所述

原因:
这里存在的问题是:fopen 打开的文件,不执行关闭操作,是不会保存数据至文件的。
你虽然执行了fprintf 写入了数据,但在fclose前就从文件获取数据,数据是没有保存在文件内的,因此该操作获取不到任何数据。

解决方法:
向文件写完数据后,马上执行fclose操作,完成数据的保存,然后再执行fopen 打开该文件,进行fgetc获取数据,打印到屏幕,使用完毕后在关闭该文件。需要注意的地方是,第二次打开文件的操作需要修改为只读或其他读取模式,即 “r+”而不再是 "w+"。

谢谢采纳!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-22
在fprintf 下面加上
fseek(fp, 0, SEEK_SET);

就可以了,把文件指针,移动到开始位置

while循环里面还要加上
ch=fgetc(fp);
第2个回答  2013-09-22
跟你文件的指针有关系,当你添加完数据的时候,文件指针是移动到了最后
第3个回答  2013-09-22
fprintf后加
fseek(stream, 0, SEEK_SET);

用c语言向一txt文件写入内容后将该写入的内容从txt输出到屏幕上,错在...
原因:这里存在的问题是:fopen 打开的文件,不执行关闭操作,是不会保存数据至文件的。你虽然执行了fprintf 写入了数据,但在fclose前就从文件获取数据,数据是没有保存在文件内的,因此该操作获取不到任何数据。解决方法:向文件写完数据后,马上执行fclose操作,完成数据的保存,然后再执行fopen 打开该文...

如下小程序,c语言从TXT文件中读取数据并显示,运行结果怎么不对呢?
if ((fp=fopen("abc.txt","r+"))==NULL){ printf("cannot open this file!\\n");exit(0);} fscanf(fp,"%d,%d",&a,&b);printf("%d,%d\\n",a,b); \/\/change getch();}

如何用c语言实现文件先写入部分数据,然后再读取输出在屏幕上
文件先写入部分数据,然后再读取输出在屏幕上,所以,在打开文件时必须以可读写方式"+"打开文件。(r+ w+ a+均可)写完后,再读。因此,要把文件指针前移才可以,否则当前位置处在已写完的数据位置,无法读到数据。参考代码:include<stdio.h>int main(){ FILE *fp; char read[1000]; ...

在c语言中用文件操作保存txt类型数据,用记事本打开成乱码了?
fwite是用于对文件进行二进制写入,写入的都是1和0,这种文件一般用记事本打开都是乱码的,建议你用fprintf。它的功能是传送格式化输出到一个流中,你用它指定每一个数据的格式并单独写入检举就OK了。

在VS2019中C语言编程打开txt文件写入一句话,出现了C28183错误,怎么解决...
errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );函数参数 pFile:文件指针将接收到打开的文件指针指向的指针。infilename:文件名。inmode:允许的访问类型。--- 返回值:如果成功返回0。失败:

c语言怎么把东西写到文件里,再从文件输出到屏幕上
用WritePrivateproFileString( )和GetPrivateproFileString( ) 两个函数就可以了啊, 不用打开文件 , 关闭文件, 定位, 移动文件指针之类的 为防止有人说C下不能用, 特写一个简单的 include <stdio.h>#include <stdlib.h>#include <windows.h>struct STRUCT{char name[20];float chinese;float math;...

...函数写入txt文件中的数据如何按格式输出?(我在编写学生管理系统遇 ...
您好,茫茫人海之中,能为君排忧解难实属朕的荣幸,在下拙见,若有错误,还望见谅!。简单的来说:FILE *fp = fopen(“*.txt”, "w");fprintf(fp, "这里放置你需要输出到txt文件的字符流!",...);fclose(fp)非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

C语言读写TXT文件问题
)函数以及fgetc()函数上,在读取文件流上,末尾会读出一个值为-1的字符变量,正是由于这个怪异的值,才出现了那个乱码。我测试过了,读入-1跟文本文件的编码无关,我测试过ANSI和UNICODE编码的文本文件,均为读入这个值为-1的结束符。所以,为了避免这个情况,再输出字符时,去掉该结束字符吧。

C语言中如何建立文档然后网里面添加数据,然后再屏幕上打印出来
写文件”的权限,而你现在又想要得到文件里的信息,所以你一个在fopen的时候第二个参数填“wb+”即fopen( "C:\\\\Users\\\\Loki\\\\Downloads\\\\loki.txt" , "wb+" );但是实际上你用这个函数打开文件,然后用fread读取文件数据,这些数据都是二进制数据的,你确定你是想读取文件的二进制数据吗?

C语言中,如何将文本文件的内容输出到屏幕?
gets(my_filename) ; \/* 从键盘上输入要打开的文本文件名 *\/ fpr = fopen(my_filename, "r" ) ; \/* r:以文本方式打开文件 *\/ if( fpr == NULL ) \/* 若文件打开失败,则输出错误信息,并直接退出程序 *\/ { printf("Can't open %s for read !\\n", my_filename ) ;exit(1) ...

相似回答