C语言中常用的文件读写方法(二)

本文介绍C语言中常用的文件读写方法: fputs 和 fgets

一、fputs

1. 函数格式:int fputs(char* str, FILE* fp);

2. 参数解释:

str是字符型指针,是待写入的字符串,它可以是字符串常量,或者存放字符串的数组首地址;

fp为文件指针,它是执行 fopen 打开文件函数获得的。

3. 函数功能:将字符串str写入到文件指针fp所指向的文件的当前写指针的位置(不自动生成字符串结束标记符'\0')。

4. 函数返回值:成功写入一个字符串后,文件内部的写指针位置会自动后移,函数返回一个非负整数;如果写入失败,则返回一个EOF(即-1)。EOF是在stdio.h文件中定义的符号常量,值为-1。

5. 源代码示例:
#include <stdio.h>
#include <stdlib.h>

#define FPUTS_TXT "fputs_txt"

int main()
{
    FILE *fp;
    char *str = "have a nice day!";
    int ret = 0;

    if (NULL == (fp = fopen(FPUTS_TXT, "w+"))) {
	printf("open file failed!\n");
	exit(0);
    }

    if (EOF == (ret = fputs(str, fp))) {
	printf("write file failed!\n");
	exit(0);
    }

    fclose(fp);
    printf("ret is %d\n", ret);

    return 0;
}

说明:

1)文件“fputs_txt”是与上面源码文件处于同一目录下的文本文件;

2)上面代码的作用是将字符串 str 的内容写入到文本文件“fputs_txt”中,经过编译运行,证实上述代码可用。

二、fgets

1. 函数格式:char *fgets(char *buf, int bufsize, FILE* fp);

2. 参数解释:

buf 是字符型指针,指向用来存储从文件中读取数据的地址;

bufsize 是整形数据,表示要读取的字符个数;

fp为文件指针,它是执行 fopen 打开文件函数获得的。

3. 函数功能:从文件指针fp所指向的文件的一行中(以'\0'为标志)读取 bufsize-1 个字符(第bufsize个字符赋'\0'),并将读取的数据保存在 buf 所指向的字符数组中。
注意:如果在读取 bufsize-1 个字符之前遇到了换行符'\n',则读取操作结束,读取的总内容为:前面读取的内容和换行符'\n'。

4. 函数返回值:如果读取成功,fgets将返回buf;如果在执行fgets函数读字符时,遇到文件结束符或读取出错时,函数返回一个文件结束标志EOF(即-1)。

5. 源代码示例:

#include <stdio.h>
#include <stdlib.h>

#define FGETS_TXT "fgets_txt"

int main()
{
    FILE *fp;
    char str[30];
    int n = 22;

    if (NULL == (fp = fopen(FGETS_TXT, "r"))) {
	printf("open file failed!\n");
	exit(0);
    }

    if (NULL == fgets(str, n, fp)) {
	printf("read file failed!\n");
	exit(0);
    }

    fclose(fp);
    printf("str is %s\n", str);

    return 0;
}

说明:

1)文件“fgets_txt”是与上面源码文件处于同一目录下的文本文件,此文件需要用户手动创建,并编辑文件内容;

2)上面代码的作用是从“fgets_txt”文件中读取21个字符的内容(第22个字符赋值为'\0'),并将读取的内容赋值给字符串 str,最后输出字符串 str 的内容,经过编译运行,证实上述代码可用;

3)如果在读取21个字符的过程中,遇到了换行符'\n',那么读取操作结束,字符串 str 的内容为“所读取的内容和换行符'\n'”。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值