在C语言中,文件有多种读写方式,可以一个字符一个字符地读取,也可以读取一整行,还可以读取若干个字节。文件的读写位置也非常灵活,可以从文件开头读取,也可以从中间位置读取。
在C语言中,二进制方式很简单,读文件时,会原封不动的读出文件的全部内容,写的时候,也是把内存缓冲区的内容原封不动的写到文件中。
而对文本文件的处理就不一样了。Windows 和 DOS 下的文本文件以CRLF(0X0D 0X0A)作为换行符,而C语言本身以LF(0X0A)作为换行符,所以以文本方式写入数据时,会将LF(0X0A)替换为CRLF(0X0D 0X0A),而读取数据时又会替换回来。
CR(0X0D)表示回车符,也就是 '\r';CL(0X0A)表示换行符,也就是 '\n'。在Linux和其他一些系统中,文本文件的换行符就是LF(0X0A),与C语言的换行符一样。所以也就没有了文本方式和二进制方式的区分,使不使用'b'标志都是一样的。
扩展资料
C语言中文件的读取和写入
在C语言中写文件
//获取文件指针FILE *pFile = fopen("1.txt", //打开文件的名称
"w"); // 文件打开方式 如果原来有内容也会销毁//向文件写数据fwrite ("hello", //要输入的文字
//文字每一项的大小 以为这里是字符型的 就设置为1 如果是汉字就设置为4
strlog("hello"), //单元个数 我们也可以直接写5
pFile //我们刚刚获得到的地址 );//fclose(pFile); //告诉系统我们文件写完了数据更新,但是我们要要重新打开才能在写fflush(pFile); //数据刷新 数据立即更新
写入文件中?#include
int main(void)
{
int i;
FILE *fp=fopen("c;\\a.txt","w");/*打开c:\a.txt文件以写入数据,如果不存在,就新建这个文件,后面的"w"表示是向文件写入数据*/
if(fp){
for ( i=1;i<100;i++ )
{
fprintf(fp,"%d\n",i);/*向文件fp写入数据,每行一个整数*/
}
fclose(fp);/*关闭文件*/
}
return 0;
}
FILE *file;//定义一个文件指针if((file = fopen(filename, openmode)) == NULL)//用fopen打开文件,filename是字符串,代表文件名,openmode是打开模式,是读,还是写,还是读写,打开的是文本文件还是二进制文件,具体的模式请查阅MSDN。如果上面的判断为真说明文件打开失败,必须返回,下面的读写操作不能执行。如果不为真,说明打开成功。你就可以用file来读写了。具体的函数比较多:int fprintf( FILE* stream, const char* format [, argument ]...);int fscanf( FILE* stream, const char* format [, argument ]... );int fgetc( FILE* stream );size_t fread( void* buffer, size_t size, size_t count, FILE* stream );size_t fwrite( const void* buffer, size_t size, size_t count, FILE* stream );
等等函数,具体的含义你可以百度或者查阅MSDN。最后,用完文件一定要记得关闭文件。fclose(file);