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.结语
最后的最后,如果大家觉得有用,就请点点赞,点点关注,谢谢大家!