这篇文章主要为大家详细介绍了C语言的文件操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
一、文件的顺序读写
兄弟们,上一章只介绍了如何将单个字符或字符串写入文件或从文件中读取。在文件的顺序读写后面还有几个函数没有完成。我们继续上一章,介绍完后,把图片抄给大家复习。
1图片如下:
1.格式化的输出函数(fprintf)
以便我们可以将格式化的数据写入文件。
代码如下:
#includelt;stdio.hgt;struct S{char arr;int num;float sc;};int main(){struct S s = { "abcdef",20,5.5f };FILE* pf = fopen("test.dayta", "w");if (NULL == pf){return 1;}//写文件fprintf(pf, "%s %d %f", s.arr, s.num, s.sc);//这就是如何把格式化的数据写到文件里//关闭文件fclose(pf);pf = NULL;return 0; }
2.格式化的输入函数(fscanf)
[10]
以便我们可以从文件中读取格式化的数据。
代码如下:
#includelt;stdio.hgt;struct S{char arr[10];int num;float sc;};int main(){struct S s = {0};FILE* pf = fopen("test.dayta", "r");if (NULL == pf){return 1;}//写文件fscanf(pf, "%s %d %f", s.arr, amp;(s.num), amp;(s.sc));//这就是如何把格式化的数据写到文件里printf("%s %d %f", s.arr, s.num, s.sc);fprintf(stdout, "%s %d %f", s.arr, s.num, s.sc);//这类函数参数不同,功能就不同,可以适用于所有的流//关闭文件fclose(pf);pf = NULL;return 0; }
3.二进制读写
1.二进制输出函数(fwrite)
以二进制模式将数据写入文件。
代码如下:
struct S{ char arr[10]; int num; float sc;};int main(){ struct S s = {"abcdef",20,5.5f}; FILE* pf = fopen("test.dayta", "w"); if (NULL == pf) { return 1; } //写文件 fwrite(amp;s, sizeof(struct S), 1, pf); //关闭文件 fclose(pf); pf = NULL; return 0; }
2.二进制输入函数
以二进制模式从文件中读取数据。
代码如下:
#includelt;stdio.hgt;struct S{char arr[10];int num;float sc;};int main(){struct S s = {0};FILE* pf = fopen("test.dayta", "r");if (NULL == pf){return 1;}//写文件fread(amp;s, sizeof(struct S), 1, pf);printf("%s %d %f", s.arr, amp;(s.num), amp;(s.sc));//关闭文件fclose(pf);pf = NULL;return 0; }
3.scanf,fscanf,sscanf、printf,fprintf,sprintf的区别
Scanf标准输入的格式化输入语句stdin
所有输入流的FSF格式输入语句-stdin/file
sscanf—从字符串中读取格式化数据。
printf—标准输出的格式化语句—stdout
fprintf—所有输出流的打印格式语句—stdout/ file
sprintf—将格式化数据转换为字符串。
二、文件的随机读写
1.fseek函数
Fseek函数:根据文件指针的位置和偏移量定位文件指针。
代码如下:
#includelt;stdio.hgt;int main(){FILE* pf = fopen("test.data", "r");if (NULL == pf){perror("main");return 1;}//读取文件int ch = fgetc(pf);printf("%c\n", ch);//调整文件 fseek(pf, 2, SEEK_END);int ch = fgetc(pf);printf("%c\n", ch); //关闭文件fclose(pf);pf = NULL;return 0; }
2.ftell函数
Ftell函数:返回文件指针相对于起始位置的偏移量(告诉偏移量是多少)
3.rewind函数
Rewind函数:将文件指针的位置返回到文件的开头。
三、被错误使用的feof
Feof(文件结尾返回非0)
Feof用于判断是读取失败还是文件在文件末尾结束。
fgetc函数在读取结束时返回EOF,正常读取时返回读取字符的ASCII码值。
fgets函数在读取结束时返回NULL,在正常读取时返回存储字符串的空之间的起始地址。
当fread函数读取时,它返回实际读取的完整元素的数量。如果发现读取的元素数小于指定的元素数,则这是最后一次读取。
编写代码test.txt文件的副本以生成test2.txt。
#includelt;stdio.hgt;int main(){FILE* pfread = fopen("test.txt", "r");if (NULL == pfread){return 1;}FILE* pfwrite = fopen("test2.txt", "w");{if (pfread == NULL){fclose(pfread);pfread = NULL;return 1;}//文件打开成功//读写文件int ch = 0;while((ch = fgetc(pfread))!= EOF){//写文件fputc(ch, pfwrite);}}//关闭文件fclose(pfwrite);pfwrite = NULL;return 0;}
总结
两篇综合文章简单介绍了什么是文件,如何使用文件,如何操作文件。学习如何使用文件使我们能够进一步加深对编程的理解。相信大家都学过了。以上文章如有问题,欢迎大佬们质疑。我会虚心学习和改正。最重要的是共同进步成长,学好编程。
这就是下一篇C语言基础上的超详细的文件操作。关于C语言文件操作的更多内容
精彩评论