目录
函数介绍:
fputs:
写入多行字符到文件中:
文件效果:
图中的效果是变成了一行,那么想要变成多行的效果应该如下代码所示进行操作:
多行字符代码:
文件效果:
fgets:
将文件内容打印到屏幕上:
文件内容展示:
代码:
问题:
屏幕效果:
数组空间本就有内容:
调用代码效果展示:
函数介绍:
- fgets:一次读取一行字符
- fputs:一次写入一行字符
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:
- 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;
}
调用代码效果展示:
- 从上图我们得知当读取完一行的内容后,便会在后面自动加上\0
- 所以读取20个字符实际上是读取文件内容的19给字符,后面自己加上\0
- 且,如果有多行内容,读取的时候会读取\n,且读取失败会返回空指针