优质网站建设价格,如何申请公众号,哪个网站做视频有收益,网站源代码上传都需要怎么做一、fopen
在C语言中#xff0c;操作文件之前应该先打开文件。使用stdio.h头文件中的fopen()函数可以打开文件#xff0c;因为FILE也是结构体#xff0c;我们通过返回一个文件指针就可以对文件进行操作。在用完fopen之后要记得关闭该文件流。
用法#xff1a;
F…一、fopen
在C语言中操作文件之前应该先打开文件。使用stdio.h头文件中的fopen()函数可以打开文件因为FILE也是结构体我们通过返回一个文件指针就可以对文件进行操作。在用完fopen之后要记得关闭该文件流。
用法
FILE* fl fopen(文件名,打开方式);
其中打开方式有 为了实现低耦合我们也可以这样写
int main(int arg,char* argv[])
{FILE* fl fopen(argv[1],打开方式);fclose(fl);return 0;
}
因为在main函数中我们传入的是一个指向字符串的指针数组所以我们可以用argv[1]来表示传入的第二个字符串一般我们Linux中第一个传入的参数是所要编译的文件第二个才是所要操作的文件所以可以这样写。这样我们就可以打开一个文件了但是我们还没有对文件进行读写操作所以控制台还不会有任何输出。
为了判断文件是否打开成功我们还可以用if语句进行判断一下
int main(int arg,char* argv[])
{FILE* fl fopen(argv[1],打开方式);if(fl NULL)
{perror(fopen error!\n);exit(0);
}fclose(fl);return 0;
}
如果fl打开失败则用函数perror打印一下然后用exit(0)终止程序。注意用exit()函数要加上includestdlib.h头文件
二、fgetc
这个是最简单的读文件操作这个函数用来从文件指针指向的文件中读一个字符返回的值是读取的字符如果发生错误则返回EOF
用法 fgetc(文件指针); int main()
{FILE* fl fopen(test.txt,r);char ch fgetc(fl);printf(%c,ch);fclose(fl);return 0;
}
在其中我们以只读的方式打开了文件test.txt用fgetc()获取的fl指向文件的第一个字符并把其赋值给了ch假设我们test.txt文件内容是这样的 abcd 则打印结果是 a 三、fgets
与上面的fgetc()函数不同的是fgets()函数是从一个文件中一次性读一行数据并且它会把读取的字符串复制到缓冲区buf并在最后追加一个null字符来终止字符串。
用法 fgets(char *buf, int n, FILE* fl); #define 10 SIZE
int main(int arg,char* argv[])
{FILE* fl fopen(argv[1],r);char buf[20];fgets(buf,SIZE,fl);fclose(fl);return 0;
} 其中有两种情况
1、当SIZE大于一行的字符串时那么当读到字符串末尾的换行符时fgets()会返回并在buf的最后面插入字符串结束标志\0。而buf缓冲区剩余的位置不会再填充
2、当SIZE小于一行的字符串时那么会读入n-1个字符此时并没有读到末尾的\n,但是还是会在buf缓冲区末尾加上\0
可以用while循环来输出fgets()函数读入的字符串
#define 10 SIZE
int main(int arg,char* argv[])
{FILE* fl fopen(argv[1],r);char buf[20];while(fgets(buf,SIZE,fl)!NULL)
{printf(%s,buf);
}fclose(fl);return 0;
}
三、fputc
fputc是向指定的文件中写入一个字符 用法 fputc(int ch,FILE* fl); 其中ch为要写入的字符fl为文件指针fputc()写入成功时返回要写入的字符失败时返回EOF
如
#define 10 SIZE
int main(int arg,char* argv[])
{FILE* fl fopen(argv[1],a);char ch a;fputc(ch,fl);fclose(fl);return 0;
}
注意此时用的打开文件方式是a,a是往文件后面追加的意思不会覆盖文件里面已有的内容而用w的话就会覆盖掉文件里面已有的内容。
四、fputs
fputs()函数是将一行字符串写入到指定的文件中但不包括空字符 用法 fputs(char *str,FILE* fl); 其中 str是要输入的字符串fl是指向所要写入的文件的指针
#define 10 SIZE
int main(int arg,char* argv[])
{FILE* fl fopen(argv[1],打开方式);fputs(aabbcc,fl);fclose(fl);return 0;
}
其中将字符串aabbcc写入到了fl指向的文件中。
五、fscanf
fscanf函数是根据format格式从fl中读取数据与fgets类似 int fscanf(FILE *fl, const char *format, [argument...]) 其中fl是指向文件的指针format是格式字符串[argument...]是接收字符串的参数。fscanf()遇到空格、回车会断开fgets遇到回车会断开
如
#define 10 SIZE
int main(int arg,char* argv[])
{FILE* fl fopen(argv[1],r);while(!feof(fl))
{char buf[10] {0};fscanf(fl,%s,buf);printf(%s,buf);
}fclose(fl);return 0;
}
其中定义了一个buf缓冲区将读取到的字符放到buf中然后输出
六、fprintf
fprintf()函数用于向文件中输出格式化文本与fputs类似
该函数类似于printf函数只是printf将文本打印到命令窗口中fprintf将文本输出到文件中
用法 int fprintf (FILE* fl, const char*format, [argument...]) 其中fl为指向文件的指针format为要写入格式[argument]为可变参数。 #includestdio.h#includestdlib.hint main(int arv,char *argv[]){FILE *fl fopen(argv[1],a);if(fl NULL){perror(error!\n);exit(0);}char str[] abcdef;for(int i0;i6;i){fprintf(fl,buf[%d] %c\n,i,str[i]);}fclose(fl);return 0;}其中定义了一个字符串str并用fprintf函数将该字符串以buf[%d] %c\n格式输入到fl指向的文件中