我正在编写一个程序,它接收一个文件并将其拆分为多个用户指定大小的小文件,然后再将多个小文件连接起来。
代码必须适用于C和C ++
我正在编译多个编译器。
我正在使用函数fread()
和fwrite()
fread()
和fwrite()
处理字节,而非字符串。
我遇到的问题与CRLF有关。如果我正在读取的文件包含CRLF,那么当我拆分并将文件重新连接在一起时,我想保留它。如果文件包含LF,那么我想保留LF。
不幸的是,fread()
似乎将CRLF存储为\n
(我认为),fwrite()
编写的任何内容都依赖于编译器。
如何处理此问题?
答案 0 :(得分:11)
以二进制模式进行读/写操作。这应该与CRLF或LF线结尾无关。
答案 1 :(得分:2)
#include <stdio.h>
int main() {
FILE * f = fopen( "file.txt", "rb" );
char c;
while( fread( &c, 1, 1, f ) ) {
if ( c == '\r' ) {
printf( "CR\n" );
}
else if ( c == '\n' ) {
printf( "LF\n" );
}
else {
printf( "%c\n" , c );
}
}
fclose( f );
}