c++里读写文件函数i 关于c语言文件写入读取函数的问题 谢谢

C++\u4e2d\uff0cgood()\u51fd\u6570\u662f\u4ec0\u4e48\u610f\u601d\u554a\uff1f\u600e\u4e48\u7528\u7684\uff1f

\u80af\u5b9a\u662f\u4e2a\u81ea\u5b9a\u4e49\u51fd\u6570\uff0c\u53bb\u5934\u6587\u4ef6\u91cc\u770b\u770b\uff0c\u4ece\u6ca1\u6709\u542c\u5230\u8fc7\u8be5\u51fd\u6570\u3002

fread(&n,4,1,fp); //\u8fd9\u4e2a\u662f\u5bf9\u7684\uff0c\u4f46\u8981\u572832\u4f4d\u73af\u5883\u4e0b\uff0c\u901a\u7528\u7684\u65b9\u5f0f\u53ef\u4ee5\u8fd9\u6837
fread(&n,sizeof(n), 1, fp);


fprintf(fp,"%d",&n);(\u8fd9\u91cc\u8981\u4e0d\u8981\u5730\u5740\u7b26&\u5440)
\u4e0d\u8981 &

\u5982\u679c\u662f\u6570\u7ec4char str[20]:
fread(str,4,1,fp); //\u5982\u679c\u4f60\u60f3\u4fdd\u5b58\u6570\u7ec4\u5185\u5bb9\uff0c\u5e94\u8be5\u8fd9\u6837
fread(str, sizeof(str), 1, fp); //sizeof(str) = 20;

\u5728fscanf\u548cfprintf \u9488\u5bf9\u6570\u7ec4\u90fd\u4e0d\u7528 &

这是一个很经典的问题了。

while(i_file.good())和while (!i_file.eof())存在同样的问题,你到网上搜一下“C/C++文件之eof()”,就明白怎么回事了。

注意最后一段话:

“2. 读取文件过程中,读取非char型时,使用peek判断文件尾将不再适用,循环判断条件应改用>>操作符进行读取,若读入char型缓冲区,peek函数会表现得很好。”

最后一次i_file >> out_text实际上读取失败了,但是并不会把原先的out_text清空,所以仍然输出了上一次读取的out_text的值。

正确的写法应该是:

while (i_file >> out_text)
        {
            cout <<  out_text <<  endl;
        }


这个很简单,在你读取内容之后再判断一次就ok了

  • c++閲岃鍐欐枃浠跺嚱鏁癷_file.good()浣跨敤闂,浠g爜濡備笅
    绛旓細while(i_file.good())鍜寃hile (!i_file.eof())瀛樺湪鍚屾牱鐨勯棶棰橈紝浣犲埌缃戜笂鎼滀竴涓嬧C/C++鏂囦欢涔媏of()鈥濓紝灏辨槑鐧芥庝箞鍥炰簨浜嗐傛敞鎰忔渶鍚庝竴娈佃瘽锛氣2. 璇诲彇鏂囦欢杩囩▼涓紝璇诲彇闈瀋har鍨嬫椂锛屼娇鐢╬eek鍒ゆ柇鏂囦欢灏惧皢涓嶅啀閫傜敤锛屽惊鐜垽鏂潯浠跺簲鏀圭敤>>鎿嶄綔绗﹁繘琛岃鍙栵紝鑻ヨ鍏har鍨嬬紦鍐插尯锛宲eek鍑芥暟浼氳〃鐜板緱寰堝ソ銆
  • 鐢C璇█缂栧啓 鏂囦欢璇诲啓
    绛旓細"r"))==NULL) { printf("鏃犳硶鎵撳紑姝鏂囦欢锛"); } else { while(!feof(p)) { fscanf(p, "%s%d%d%d", s[i].name, &s[i].english, &s[i].math, &s[i].program); i++; *n=*n+1; } } fclose(p);}void paixu(struct student s[], int n) //鎺掑簭鍑芥暟{...
  • c璇█ 璇诲啓鏂囦欢鏃舵庝箞鏍蜂竴娆¤鍙栧嚑琛,鐒跺悗鍐嶅嚑琛屽嚑琛岀殑寰涓嬭鍙朹鐧惧害鐭 ...
    绛旓細鐢ㄥ弻閲嶅惊鐜鍙ワ紝灏卞彲浠ュ啀鍑犺鍑犺鍦拌銆備緥濡傦細include <stdio.h> include <stdlib.h> FILE *fin;main(){ char s[20][200];int i,j;fin=fopen("abc.txt","r"); // 鎵撳紑鏂囦欢 for (i=0;i<4;i++) fgets(s[i],200,fin); // 浠ュ瓧绗︿覆褰㈠紡 璇4琛 for (i=0;i<4;i+...
  • C璇█濡備綍璇诲彇txt鏂囨湰閲岄潰鐨勫唴瀹?
    绛旓細C璇█鍙互浣跨敤fopen锛堬級鍑芥暟璇诲彇txt鏂囨湰閲屻傜ず渚嬶細include <stdio.h> FILE *stream, *stream2;void main( void ){ int numclosed;/* Open for read (will fail if file "data" does not exist) */ if( (stream = fopen( "data", "r" )) == NULL )printf( "The file 'data' was...
  • C璇█鏂囦欢璇诲啓缁撴瀯浣撻噷闈㈢殑鏁版嵁鎬庢牱瀛樺埌纾佺洏鏂囦欢涓
    绛旓細fwrite(&v, sizeof(v), 1, fp); //鍐欏叆鏂囦欢銆 fclose(fp);//鍏抽棴鏂囦欢銆 return 0;}褰撻渶瑕璇诲彇鐨勬椂鍊欙紝鎸夌収绫讳技鐨勬祦绋嬶紝閫氳繃fread璇诲彇鍗冲彲銆傝鎿嶄綔浼樺娍涓猴細a 浠g爜绠鍗曘俠 瀛樺偍鐨勬暟鎹枃浠跺ぇ灏忓浐瀹氾紝灏辨槸缁撴瀯浣撳崰鐢ㄥ唴瀛樼┖闂寸殑鏁存暟鍊嶃傝繖鏍峰湪璇荤殑鏃跺欏氨鍙互鏍规嵁鏂囦欢鐨勫ぇ灏忕洿鎺ュ垽鏂嚭涓鍏卞瓨鍌...
  • C璇█鏂囦欢璇诲啓缁撴瀯浣撻噷闈㈢殑鏁版嵁鎬庢牱瀛樺埌纾佺洏鏂囦欢涓
    绛旓細1銆侀鍏堟墦寮VC++6.0銆2銆侀夋嫨鏂囦欢锛屾柊寤恒3銆侀夋嫨C++ source file 鏂板缓涓涓┖鐧芥枃妗c4銆侀鍏堝0鏄庡ご鏂囦欢锛#include<stdio.h>銆5銆佷富鍑芥暟锛屽畾涔夊彉閲弇ain( ){ FILE *fp; int i; 闇瑕佷竴涓粨鏋勪綋锛宻truct rec{ /*瀹氫箟缁撴瀯浣撶被鍨*/ char id[10];銆6銆佷富瑕佷唬鐮乮f( (fp=fopen("d:\\in...
  • 姹傛爣鍑C璇█璇诲啓鏂囦欢鐨勬簮浠g爜
    绛旓細C璇█璇诲啓鏂囦欢 閮芥槸涓変釜姝ラ 1.鑾峰彇鏂囦欢鎻忚堪绗 2.瀵规枃浠惰鍐 3.鍏抽棴鏂囦欢 瀵鏂囦欢璇鎿嶄綔 //鑾峰彇鏂囦欢鎸囬拡FILE *pFile = fopen("1.txt","w"); // 鏂囦欢鎵撳紑鏂瑰紡 濡傛灉鍘熸潵鏈夊唴瀹逛篃浼氶攢姣//鍚鏂囦欢鍐鏁版嵁fwrite ("hello", //瑕佽緭鍏ョ殑鏂囧瓧 1,//鏂囧瓧姣忎竴椤圭殑澶у皬 浠ヤ负杩欓噷鏄瓧绗﹀瀷鐨 灏辫缃...
  • C璇█,鏂囦欢璇诲彇閮ㄥ垎鐨,涓嶄細,姹傚悇浣嶅ぇ浣府甯繖
    绛旓細杩愯缁撴灉 澶勭悊瀵嗙爜涓插強鍔犲瘑杩囩▼ 瑙e瘑鍙婃祴璇曚富绋嬪簭 涓婇潰鏄祴璇曠粨鏋滀笌鍔犺В瀵嗚繃绋嬨傛病鏈夊仛鏂囦欢璇诲啓鎿嶄綔锛岃嚜宸辫ˉ锛屽疄鍦ㄤ笉浼氬幓鎶勬暀鏉愩傚皢杈撳叆鏂囦欢鍐呭寰幆璇诲埌涓涓瓧绗︽暟缁勶紝鐒跺悗瀵硅鏁扮粍鍐呭杩涜鍔犲瘑锛屽啀灏嗗姞瀵嗙粨鏋滃啓鍏ヨ緭鍑烘枃浠讹紝寰幆鎿嶄綔鐩磋嚦杈撳叆鏂囦欢璇诲彇瀹屾垚锛屽叧闂枃浠跺嵆鍙
  • C璇█鎴愬潡璇诲啓鏂囦欢鐨勯棶棰樸
    绛旓細閭f潯if璇彞涓嶆槸鍒ゆ柇璋冪敤鏄惁鎴愬姛锛岃屾槸鍒ゆ柇鏄惁鍐欏叆鎴愬姛銆俧write(buffer,size,count,fp);杩斿洖鍊硷細杩斿洖鐨勬槸瀹為檯鍐欏叆鐨勬暟鎹」涓暟銆傦紙1锛塨uffer锛氳鑾峰彇鏁版嵁鐨勫湴鍧銆傦紙2锛塻ize锛氳璇诲啓鐨勫瓧鑺傛暟锛涳紙3锛塩ount:瑕佽繘琛岃鍐欏灏戜釜size瀛楄妭鐨勬暟鎹」锛涳紙4锛塮p:鏂囦欢鎸囬拡銆傜敱浜庤皟鐢╢write鏃讹紝瀹冪殑count鍙傛暟鏄1锛...
  • 鐢c璇█缂栫▼
    绛旓細璇诲啓鏂囦欢娴佺▼锛歠open鑾峰彇鏂囦欢娴(鏍规嵁璇诲啓闇姹傦紝閫夋嫨鍙傛暟锛屼娇鐢ㄥ畬蹇呴』璋冪敤fclose鍑芥暟鍏抽棴)锛宖scanf璇诲彇鏂囦欢鍐呭锛宖seek鎺у埗鏂囦欢娴佹寚閽堬紝fprintf鍐欏叆鏂囦欢銆傞夋嫨鎺掑簭锛氭瘡涓惊鐜懆鏈熼夊嚭涓涓渶鍊硷紝浜ゆ崲涓娆°備笅闈㈡槸浠g爜锛堟暟缁勪负鍔ㄦ佹暟缁勶級锛歩nclude <stdio.h> include <malloc.h> int maxLen;//鏁扮粍闀垮害 int *...
  • 扩展阅读:ai智能写作一键生成 ... c++教程 ... c++编程适合几岁学 ... c++编程 ... c++编程适合多大孩子 ... c#难还是c++难 ... c++和python先学哪个 ... c++必背入门代码 ... c++编程题经典100例 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网