目录
图中的效果是变成了一行,那么想要变成多行的效果应该如下代码所示进行操作:

- fgets:一次读取一行字符
- fputs:一次写入一行字符
fputs(“一行字符”,文件指针变量);
- int main()
- {
- FILE* pf = fopen("data.txt","w");
- if (pf == NULL)
- { perror("fopen");
- return l;
- }
- //写一行
- fputs("hello world",pf);
- fputs("hehe",pf);
- fclose(pf);
- pf = NULL;
- return 0;
- }

- fputs("hello world\n",pf);
- fputs("hehe\n",pf);
- fclose(pf);
- pf = NULL;
-

- fgets()(函数原型:char *fgets(char *restrict str, int size, FILE *restrict stream))
- fgets(存放空间的起始地址,读取字符的个数,文件指针变量)
- 本意是将读取的内容放入空间中。

- int main()
- {
- FILE* pf = fopen("data.txt","r");
- if (pf == NULL)
- { perror("fopen");
- return l;
- }
-
- char arr[20] = {0};
- fgets(arr,20,pf);
- printf("%s\n",arr);
-
- fclose(pf);
- pf = NULL;
- return 0;
- }
大意:将文件的内容进行读取,读取后的内容放到一个空间中,随后使用printf进行打印出,完成文件内容打印到屏幕上。
如图中,读取文件中第一行的二十个字符,并将读取后的二十个字符放入arr所指向的空间中,(arr是数组名,代表arr数组空间的第一个元素地址)
在放入空间之前我们会发现一个问题,就是函数是读取一行的内容,而我们的文件的效果中有两行,且第一行的内容不足填充数组空间,所以会不会使用第二行进行填充数组空间?

看样子当文件中的第一行内容不够,需要读取的次数时,不会读取第二行。
那么当我们将数组中一开始就设数值再次运行呢?
- int main()
- {
- FILE* pf = fopen("data.txt","r");
- if (pf == NULL)
- { perror("fopen");
- return 1;
- }
-
- char arr[20] = "xxxxxxxxxxxxx";
- fgets(arr,20,pf);
- printf(l%s\n",arr);
-
- fclose(pf);
- pf = NULL;
- return 0;
- }
