学习目标
在前面我使用了fgetc来读取文件的字符,但是每次只能读一个,这也太慢了,因此就有了fgets/fputs这个函数,他可以每次读写取一行。
1、熟悉fgets函数;
2、熟悉fputs函数;
# C库函数-fgets C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 下面是 fgets() 函数的声明。
#include <stdio.h>
char *fgets(char *s, int size, FILE *stream);
s | 指向一个字符数组的指针,该数组存储了要读取的字符串 |
---|---|
size | 读取的最大字符数(包括最后的空字符) |
stream | 指向 FILE 对象的指针 |
如果成功,该函数返回相同的 s 参数。如果到达文件末尾或者没有读取到任何字符,st的内容保持不变,并返回一个空指针。如果发生错误,返回一个空指针。
#include <stdio.h>
int main()
{
char str[20];
FILE* fp = fopen("./1.txt","r");
if(NULL == fp)
{
printf("fopen err\n");
return 1;
}
if((fgets(str,20,fp)) != NULL)
{
puts(str);
}
fclose(fp);
return 0;
}
C库函数-fputs
C库函数 int fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。
下面是 fputs() 函数的声明:
#include <stdio.h>
int fputs(const char *s, FILE *stream);
s | 这是一个数组,包含了要写入的以空字符终止的字符序列 |
---|---|
stream | 这是指向 FILE 对象的指针 |
该函数返回一个非负值,如果发生错误则返回 EOF。
下面的实例演示了 fputs() 函数的用法:
#include <stdio.h>
int main(int argc, char const *argv[])
{
FILE* fp = fopen("fputs.txt","w+");
fputs("我是海贼王",fp);
fputs("不是海王!",fp);
fclose(fp);
return 0;
}