一个文件小迷糊,该如何解决
一个文件小迷糊
作用是复制tsu.txt到tsu1.txt
书上说:
函数fgets()的作用是从一个文件中读取一个字符串。其调用形式为:fgets(字符数组,字符数,文件型指针变量)
例:fgets(str,n,fp);其作用是从fp指向的文件的当前位置开始读取n-1个字符,并加上字符串结束标志‘\0’一起放入字符数组str中。如果从文件读取字符时遇到换行符或文件结束标志EOF,读取结束。
但是:
我给tsu.txt 文件内容是:asdasdadfsdfsdf\r\nsdfsdfsdffgjtyiwerwersda
运行程序后tsu1.txt 类容也是asdasdadfsdfsdf\r\nsdfsdfsdffgjtyiwerwersda
问题是:
1.遇到\r\n怎么没有结束?
2.怎么读那么多?我的n=5啊,最多读入4个字符啊
------解决方案--------------------
因为
while(!feof(f_out))
自然是循环读到文件尾了……
你自己单步下,或者去掉循环,看看结果
------解决方案--------------------
1.遇到'\r\n'是指遇到0x0d 0x0a不是指遇到0x5c 0x6e 0x5c 0x6e,即
tsu.txt 文件内容应该是:
asdasdadfsdfsdf
sdfsdfsdffgjtyiwerwersda
而不应该是:
asdasdadfsdfsdf\r\nsdfsdfsdffgjtyiwerwersda
2.下次while时fgets将后面4个接着读了呗。
------解决方案--------------------
------解决方案--------------------
- C/C++ code
#include "stdio.h" void main() { FILE *f_in,*f_out; char str[50]; f_out=fopen("C:\\tsu.txt\\","r"); f_in=fopen("C:\\tsu1.txt","w"); while(!feof(f_out)) { fgets(str,5,f_out); fputs(str,f_in); } fclose(f_out); fclose(f_in); printf("The file copy finish!"); }
作用是复制tsu.txt到tsu1.txt
书上说:
函数fgets()的作用是从一个文件中读取一个字符串。其调用形式为:fgets(字符数组,字符数,文件型指针变量)
例:fgets(str,n,fp);其作用是从fp指向的文件的当前位置开始读取n-1个字符,并加上字符串结束标志‘\0’一起放入字符数组str中。如果从文件读取字符时遇到换行符或文件结束标志EOF,读取结束。
但是:
我给tsu.txt 文件内容是:asdasdadfsdfsdf\r\nsdfsdfsdffgjtyiwerwersda
运行程序后tsu1.txt 类容也是asdasdadfsdfsdf\r\nsdfsdfsdffgjtyiwerwersda
问题是:
1.遇到\r\n怎么没有结束?
2.怎么读那么多?我的n=5啊,最多读入4个字符啊
------解决方案--------------------
因为
while(!feof(f_out))
自然是循环读到文件尾了……
你自己单步下,或者去掉循环,看看结果
------解决方案--------------------
1.遇到'\r\n'是指遇到0x0d 0x0a不是指遇到0x5c 0x6e 0x5c 0x6e,即
tsu.txt 文件内容应该是:
asdasdadfsdfsdf
sdfsdfsdffgjtyiwerwersda
而不应该是:
asdasdadfsdfsdf\r\nsdfsdfsdffgjtyiwerwersda
2.下次while时fgets将后面4个接着读了呗。
------解决方案--------------------
------解决方案--------------------