分别用fgetc,fgets,fread,read读取文件内容,输出到屏幕

1.fgetc()函数

在C语言中, fgetc是一个 标准库函数,用于从文件中读取下一个字符。它属于  <stdio.h> 头文件中定义的输入函数之一。
功能:从文件中读出一个字符,必须先调用 fopen 打开文件,然后才能读文件
int fgetc(FILE *stream);
参数: stream fopen 的返回值
返回值: 是读出的字符 ( 类型是 int , 因为 char 可以相当于一个特殊的 int 1 字节的 int)
               EOF表示 读到了文件尾或者读失败
示例:用fgetc读取文件内容,输出到屏幕
#include <stdio.h>
int main()
{
    FILE *fp = fopen("hello.c", "r");
    if(fp != NULL)
    {
        char a = fgetc(fp); //读出一个字符
        while(a != EOF) //EOF表示读失败,不是EOF说明没读到文件尾
        {
            printf("%c", a);
            a = fgetc(fp); //继续读
        }
    }
    else
    {
        printf("open failed\n");
    }
}

2.fgets()函数

在C语言中,fgets 是一个标准库函数,用于从文件中读取一行字符串。它也是 <stdio.h> 头文件中定义的输入函数之一。

功能:从文件中读取一行
char *fgets(char *s, int size, FILE *stream);
参数 1: s 读到的数据存放的缓存区 ( 暂存区 ) 的首地址 (s 通常是一个字符串数组 )
        2: size s 中最多能存多少个字节
        3: stream fopen 的返回值
返回值 : 是个 char*( 指针 ) NULL 表示读失败或者读到了文件尾
示例: 用fgets读取文件内容,输出到屏幕
#include <stdio.h>
#include <errno.h>
int main()
{
    FILE *fp = fopen("test.c","r");
    if (fp == NULL)
    {
        printf("open file error: errno:%d\n", errno);
        perror("fopen");
    }
    else
    {
        printf("open file success\n");
        char buf[100] = {0};
        char* ret = fgets(buf, sizeof(buf), fp);
        while (ret != NULL)
        {
            printf("%s", buf);
            ret = fgets(buf, sizeof(buf), fp);
        }
        fclose(fp);
    }
}

3.fread()函数

在C语言中,fread 是一个标准库函数,用于从文件流中读取块数据。它属于 <stdio.h> 头文件中定义的输入函数之一。

功能: fread 函数从指定的流 stream 中读取 nmemb 个元素,每个元素的大小为 size 字节,并将它们存储在 ptr 指向的内存块中。fread 是一个二进制读取函数,它可以读取任何类型的数据。

size_t fread ( void * ptr , size_t size , size_t nmemb , FILE * stream );
参数说明:
ptr ---> 读出的数据存放的位置 ( 缓存区首地址 )
size -->   一个元素的大小
nmemb --> 元素个数
stream --> fopen 的返回值
返回值 : 实际读出的块数 , <= 0 读到了文件尾,或者读失败
示例: 用fread读取文件内容,输出到屏幕。
#include <stdio.h>
#include <string.h>
int main()
{
    char buf[10] = { 0 };
    FILE *fp = fopen("hello.c", "r");
    if(fp != NULL)
    {
        while (fread(buf, sizeof(char), 10, fp) > 0)
        {
            printf("%s", buf);
            memset(buf, 0, sizeof(buf)); //清理缓冲区
        }
    }
    fclose(fp);
}

4.read()函数

在C语言中,read 是一个系统调用函数,用于从文件描述符中读取数据。它与 fread 函数不同,fread 是C标准库函数,作用于流(FILE *),而 read 直接在文件描述符层面上工作。

功能 : read 函数从文件描述符  fd 指向的文件中读取最多  count 个字节的数据,并将它们存储在  buf 指向的缓冲区中。如果读取成功, read 返回实际读取的字节数。如果到达文件末尾,返回 0。如果发生错误,返回 -1。
size_t read ( int fd , void * buf , size_t count );
参数:
fd open 的返回值 ( 一个文件描述符 )
buf 读取的数据,存放的位置 ( 缓存区的首地址 )
count 想要读取的数据的长度 ( 缓存区的大小 )
返回值:
> 0 实际读到的数据的长度
<= 0 读到了文件尾,或者读失败
示例: 用read读取文件内容,输出到屏幕。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
int main()
{
    int fd = open("hello.c", O_RDONLY);
    if (fd < 0)
    {
        printf("error open\n");
    }
    else
    {
        printf("success\n");
        char buf[100] = {0};
        while (read(fd, buf, sizeof(buf)) > 0)
        {
            printf("%s", buf);
            memset(buf, 0, sizeof(buf));
        }
        close(fd);
    }
}

到这里代码就分享结束,以上就是fgetc(),fgets(),fread(),read()的基本使用,大家可以参考学习学习,如有不足或错误,请在评论区留言。

5.结语

最后的最后,如果大家觉得有用,就请点点赞,点点关注,谢谢大家!

  • 27
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值