Loading... ## 使用fputs往文件中写入一个字符串 fputs("china",fp); //写一个字符串 说明: 1. 向指定的文件写一个字符串 2. 第一个参数可以是字符串常量、字符串数组名或字符指针 3. 字符串末尾的 '\0' 不会写道文件中 案例: ```C #include<stdio.h> int main(int argc, char* argv[]) { //指针数组 int i; char* buf[] = { "Fivk游客您好!\n","欢迎来到Fivk博客\n","博客地址blog.fivk.cn\n" }; int n = sizeof(buf) / sizeof(buf[0]); FILE* fp = NULL; fp = fopen("c.txt", "w"); if (fp == NULL) { perror("fopen"); return 0; } for (i = 0; i < n; i++) { fputs(buf[i], fp); } fclose(fp); return 0; } ``` 其实和fputc思路差不多 ![](https://blog.fivk.cn/usr/uploads/2021/02/275890737.png) --- ## 使用fgets往文件中读取字符串 fgets(str,n,fp); //读一个字符串 说明:从fp指向的文件读入n-1个字符之前遇到换行符或EOF,读入提前结束,并读取换行符,在最后加一个 '\0' ,str为存放数据的首地址 * 成功:返回字符串的首地址 * 失败:返回NULL <div class="tip inlineBlock share"> 应为遇到换行符会结束,所以我们一般都是获取文件一行的数据 </div> 案例: ```C #include<stdio.h> int main(int argc, char* argv[]) { char* path = "c.txt"; char buf[128] = ""; char* str = NULL; FILE* fp = NULL; fp = fopen(path, "r"); //==fpen("c.txt","r");这里path不用加"" if (fp == NULL) { perror("fopen"); return 0; } /* while (1) { //从文件中读取一行数据 str = fgets(buf, sizeof(buf), fp); if (str == NULL) break; printf("%s", buf); } */ //老师写的 while (fgets(buf, sizeof(buf), fp)) printf("%s", buf); //一行也可以 fclose(fp); return 0; } ``` * 我们以字符串的方式打开 ![](https://blog.fivk.cn/usr/uploads/2021/02/8323565.png) <div class="tip inlineBlock warning"> fgets可以一行一行的读(读完一行再读下一行),但是它只会保存最新更新的一行字符串(最后只剩下最后一行)。所以把printf放到了while里面,每更新一次字符串,输出一次。 </div> --- 最后修改:2021 年 02 月 19 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏