读字符串函数 fgets

fgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的用法为:

char *fgets ( char *str, int n, FILE *fp );

str 为字符数组,n 为要读取的字符数目,fp 为文件指针。

返回值:读取成功时返回字符数组首地址,也即 str;读取失败时返回 NULL;如果开始读取时文件内部指针已经指向了文件末尾,那么将读取不到任何字符,也返回 NULL。

注意,读取到的字符串会在末尾自动添加 ‘\0’,n 个字符也包括 ‘\0’。也就是说,实际只读取到了 n-1 个字符,如果希望读取 100 个字符,n 的值应该为 101。例如:

#define N 101
char str[N];
FILE *fp = fopen("D:\\demo.txt", "r");
fgets(str, N, fp);

表示从 D:\demo.txt 中读取 100 个字符,并保存到字符数组 str 中。

需要重点说明的是,在读取到 n-1 个字符之前如果出现了换行,或者读到了文件末尾,则读取结束。这就意味着,不管 n 的值多大,fgets() 最多只能读取一行数据,不能跨行。在C语言中,没有按行读取文件的函数,我们可以借助 fgets(),将 n 的值设置地足够大,每次就可以读取到一行数据。

示例 一行一行地读取文件。

#include <stdio.h>
#include <stdlib.h>
#define N 100
int main(){FILE *fp;char str[N+1];if( (fp=fopen("d:\\demo.txt","rt")) == NULL ){puts("Fail to open file!");exit(0);}while(fgets(str, N, fp) != NULL){printf("%s", str);}fclose(fp);return 0;
}

将下面的内容复制到 D:\demo.txt:
百度搜索引擎!
http://www.baidu.com
那么运行结果为:

百度搜索引擎!
http://www.baidu.com

fgets() 遇到换行时,会将换行符一并读取到当前字符串。该示例的输出结果之所以和 demo.txt 保持一致,该换行的地方换行,就是因为 fgets() 能够读取到换行符。而 gets() 不一样,它会忽略换行符。

写字符串函数 fputs

fputs() 函数用来向指定的文件写入一个字符串,它的用法为:

int fputs( char *str, FILE *fp );

str 为要写入的字符串,fp 为文件指针。写入成功返回非负数,失败返回 EOF。例如:

char *str = "http://www.baidu.com";
FILE *fp = fopen("D:\\demo.txt", "at+");
fputs(str, fp);

表示把把字符串 str 写入到 D:\demo.txt 文件中。

示例 向上例中建立的 d:\demo.txt 文件中追加一个字符串。

#include<stdio.h>
int main(){FILE *fp;char str[102] = {0}, strTemp[100];if( (fp=fopen("D:\\demo.txt", "at+")) == NULL ){puts("Fail to open file!");exit(0);}printf("Input a string:");gets(strTemp);strcat(str, "\n");strcat(str, strTemp);fputs(str, fp);fclose(fp);return 0;
}

运行程序,输入C Java Linux Shell,打开 D:\demo.txt,文件内容为:

百度搜索引擎
http://www.baidu.com
C  Java Linux Shell

C语言以字符串的形式读写文件相关推荐

  1. c语言fputc输入字符串,C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    C语言fgetc和fputc函数用法详解(以字符形式读写文件),文件,字符,指针,函数,字节 C语言fgetc和fputc函数用法详解(以字符形式读写文件) 易采站长站,站长之家为您整理了C语言fge ...

  2. C语言以字符形式读写文件

    C语言以字符形式读写文件 在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块). 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中 ...

  3. C语言以数据块的形式读写文件

    C语言以数据块的形式读写文件 fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 f ...

  4. matlab fgetc,C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件 ...

  5. C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件 ...

  6. [工具]-C语言中字符串的形式打印16进制数据

    C语言中字符串的形式打印16进制数据. 这样写,输出更直观些 #define PRINT_BUF_MAX (32) #define TAG_STRING_MAX (32) static void pr ...

  7. c语言fwrite作用,C语言fread和fwrite的用法详解(以数据块的形式读写文件)

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets() 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread() 函数:相应地写入函数为 fwrite(). 对于 ...

  8. c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...

  9. QT以文本流形式读写文件操作

    ui文件为两个按钮,一个文本编辑区,按钮控制读写操作,文本框显示文本内容 #include "mywidget.h" #include "ui_mywidget.h&qu ...

最新文章

  1. “你写的 Bug 让我来改好吗” | 每日趣闻
  2. 基于SLP协议的BCH黑客马拉松即将开展
  3. 阿里云风险识别决策引擎发布
  4. 使用 Equinox 开发 OSGi 应用程序
  5. vi的visual模式
  6. [2021-09-09 T3] 序列/luogu P3943 星空(异或差分+bfs最短路+状压dp)
  7. 使用 TABLESAMPLE 限制结果集
  8. 面具公园登陆不了未能找到服务器,面具公园之后,伴圈app成为了新的替代
  9. Could not reload resource bundles java.lang.NoS...
  10. python单例模式selenium driver实现单例
  11. 一行代码学会Java--2.用IDEA神器编写“你好,Java”
  12. 腾讯是如何一刀刀,在15年间干死那些竞争对手的?
  13. vue中使用web serial api实现串口通信
  14. shell了解MySQL_MySQLShell:01从入门到蒙圈
  15. 微信怎么接龙?手把手教你使用微信群接龙功能
  16. OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序
  17. JavaScript效率PK——统计特定字符在字符串中出现的次数
  18. [爱奇艺]校招笔试(2017/9/11)
  19. 【TCP/IP】TCP协议详解
  20. JavaScript 入门

热门文章

  1. eslint vscode 自动格式化_使用 VSCode 的必备三大神器,这才是开发 Vue 的真香解决方案...
  2. mfc mysql 选择删除文件_MFC应用实例:[60]删除指定类型的文件
  3. 如何设置Win11系统右键刷新
  4. vue全局安装jquery,vue使用bootstrap框架,vue中封装websocket通讯,vue引入element-ui 组件库,引入highcharts图表插件
  5. 猛将赵云java,这五位三国猛将临危救主,赵云只能排第二位,第一位大家都服...
  6. linux认令牌操作错误,验证令牌操作错误
  7. python使用loaddata_Python中LOADDATAINFILE语句导入数据(txt)进入MySQL的一些注意事项...
  8. 计算机更新服务,使用 Microsoft Update 更新计算机
  9. linux的静态编译elf无法调试,[翻译]自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB...
  10. red6.4 mysql_rhel6.4 yum本地yum源配置