怎样用C语言保存一个文件?

怎样用C语言保存一个文件?,第1张

在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)//数据刷新 数据立即更新

fp=fopen(filename,"wb")\x0d\x0a里的filename就表示了文件的路径及搜梁文件名,所以要把输入的冲数文件名和文件路径拼接起来,计算出散漏首这个filename\x0d\x0a最好过滤一下别让路径和文件名中有非法字符,比如:\/+什么的。\x0d\x0ascanf也限制一下长度。\x0d\x0ascanf("%19s",filename)\x0d\x0ascanf("%19s",path)\x0d\x0a参考如下:\x0d\x0a#include \x0d\x0a#include \x0d\x0aint main(void)\x0d\x0a{\x0d\x0a FILE *fp\x0d\x0a char ch, filename[20], path[20],buffer[40]\x0d\x0a printf("Enter the file name: ")\x0d\x0a scanf("%s",filename)\x0d\x0a printf("Enter the path: ")\x0d\x0a scanf("%s",path)\x0d\x0a sprintf(buffer, "%s\\%s", path,filename)\x0d\x0a printf("\nto end input ,press Ctrl+Z in newline,then ENTER:\n")\x0d\x0a if((fp=fopen(buffer,"wt+"))==NULL)\x0d\x0a {\x0d\x0a printf("no such path, \nstrike any key exit!")\x0d\x0a getch()\x0d\x0a exit(1)\x0d\x0a }\x0d\x0a while ((ch=getchar())!=-1) ch=fputc(ch,fp)\x0d\x0a fclose(fp)\x0d\x0a printf("==================================\n\n")\x0d\x0a printf("file path \"%s\" \nfile name \"%s\":\nand its content:\n",path,filename)\x0d\x0a fp=fopen(buffer,"rt")\x0d\x0a while ((ch=fgetc(fp))!=-1) putchar(ch)\x0d\x0a fclose(fp)\x0d\x0a return 0


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12164133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存