文件操作之函数fputs和函数fgets
fgets函数
- 最好的学习方法就是查手册,就是在iterm下使用man fgets,fputs以及其他一切不懂的函数或者其他的都可使用手册,就是man一下,你就知道。
char *
fgets(char * restrict str, int size, FILE * restrict stream
- 含义:从文件指针stream所指的文件中读取最多size-1个字符,并储存在字符数组str中,并追加一个’\0’字符。
读取操作遭遇到换行符、文件结束或者错误时停止
fputs函数
- fputs函数使用前,依然可以使用手册
int
fputs(const char *restrict s, FILE *restrict stream);
- 含义:把字符串s中的内容写入文件指针stream所指向的文件中
fputs不会自动添加‘\n’
总结
其实fputs与fgets在一起配合使用时效果最好,在使用时要注意返回值,fputs的返回值是int,而fgets的返回值是char*。另外,fgets函数与fgetc函数的区别就在于:fgetc读的是字符,是一个一个读的,而fgets读的是字符串,每次读若干个,与定义有关。fputs函数与fputc函数的区别也是一样,下面是我做的一个小例子,从文件1读内容到文件2,需要手动输入你要进行操作的文件的路径:
[代码]
#include<stdio.h>
#include<stdlib.h>
#define SIZE 36
int main(int argc,const char *argv[])
{
//定义两个文件指针
FILE *fp = NULL;
FILE *wfp = NULL;
//定义字符型数组,用以接受文件
char ch[SIZE] = {'\0'};
//判断用户的输入是否合法
if(argc != 3)
{
printf("puts error!\n");
printf("please input the right path 命令字 路径1 路径2 \n");
exit(1);
}
//打开文件
fp = fopen(argv[1],"r");
wfp = fopen(argv[2],"w");
//判断文件是否打开成功
if(NULL == fp || NULL == wfp)
{
printf("file open error!\n");
exit(1);
}
//执行文件操作
while(fgets(ch,SIZE,fp) != NULL)
{
fputs(ch,wfp);
}
printf("the file copy successful!\n");
//关闭文件
fclose(fp);
fclose(wfp);
return 0;
}