C语言以字符串的形式读写文件
读字符串函数 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语言以字符串的形式读写文件相关推荐
- c语言fputc输入字符串,C语言fgetc和fputc函数用法详解(以字符形式读写文件)
C语言fgetc和fputc函数用法详解(以字符形式读写文件),文件,字符,指针,函数,字节 C语言fgetc和fputc函数用法详解(以字符形式读写文件) 易采站长站,站长之家为您整理了C语言fge ...
- C语言以字符形式读写文件
C语言以字符形式读写文件 在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块). 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中 ...
- C语言以数据块的形式读写文件
C语言以数据块的形式读写文件 fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 f ...
- matlab fgetc,C语言fgetc和fputc函数用法详解(以字符形式读写文件)
在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件 ...
- C语言fgetc和fputc函数用法详解(以字符形式读写文件)
在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件 ...
- [工具]-C语言中字符串的形式打印16进制数据
C语言中字符串的形式打印16进制数据. 这样写,输出更直观些 #define PRINT_BUF_MAX (32) #define TAG_STRING_MAX (32) static void pr ...
- c语言fwrite作用,C语言fread和fwrite的用法详解(以数据块的形式读写文件)
fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets() 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread() 函数:相应地写入函数为 fwrite(). 对于 ...
- c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...
C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...
- QT以文本流形式读写文件操作
ui文件为两个按钮,一个文本编辑区,按钮控制读写操作,文本框显示文本内容 #include "mywidget.h" #include "ui_mywidget.h&qu ...
最新文章
- “你写的 Bug 让我来改好吗” | 每日趣闻
- 基于SLP协议的BCH黑客马拉松即将开展
- 阿里云风险识别决策引擎发布
- 使用 Equinox 开发 OSGi 应用程序
- vi的visual模式
- [2021-09-09 T3] 序列/luogu P3943 星空(异或差分+bfs最短路+状压dp)
- 使用 TABLESAMPLE 限制结果集
- 面具公园登陆不了未能找到服务器,面具公园之后,伴圈app成为了新的替代
- Could not reload resource bundles java.lang.NoS...
- python单例模式selenium driver实现单例
- 一行代码学会Java--2.用IDEA神器编写“你好,Java”
- 腾讯是如何一刀刀,在15年间干死那些竞争对手的?
- vue中使用web serial api实现串口通信
- shell了解MySQL_MySQLShell:01从入门到蒙圈
- 微信怎么接龙?手把手教你使用微信群接龙功能
- OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序
- JavaScript效率PK——统计特定字符在字符串中出现的次数
- [爱奇艺]校招笔试(2017/9/11)
- 【TCP/IP】TCP协议详解
- JavaScript 入门
热门文章
- eslint vscode 自动格式化_使用 VSCode 的必备三大神器,这才是开发 Vue 的真香解决方案...
- mfc mysql 选择删除文件_MFC应用实例:[60]删除指定类型的文件
- 如何设置Win11系统右键刷新
- vue全局安装jquery,vue使用bootstrap框架,vue中封装websocket通讯,vue引入element-ui 组件库,引入highcharts图表插件
- 猛将赵云java,这五位三国猛将临危救主,赵云只能排第二位,第一位大家都服...
- linux认令牌操作错误,验证令牌操作错误
- python使用loaddata_Python中LOADDATAINFILE语句导入数据(txt)进入MySQL的一些注意事项...
- 计算机更新服务,使用 Microsoft Update 更新计算机
- linux的静态编译elf无法调试,[翻译]自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB...
- red6.4 mysql_rhel6.4 yum本地yum源配置