运维开发网

c语言超详细文件操作基础第二部分

运维开发网 https://www.qedev.com 2022-09-28 15:21 出处:网络
这篇文章主要为大家详细介绍了C语言的文件操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

这篇文章主要为大家详细介绍了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语言文件操作的更多内容

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号