fopen
原型:FILE * fopen(const char * path, const char * mode)
打开文件
#include <stdio.h>
int main(){
FILE *fp = fopen("hello.c", "r");
if(fp){
printf("success\n");
}else{
printf("error\n");
}
return 0;
}
fclose
原型:int fclose(FILE *stream)
关闭文件
FILE *fp = fopen("hello.c", "r");
// ...
fclose(fp)
getc
原型: int getc(FILE *stream)
一次读一个字符
#include <stdio.h>
int main(){
FILE *fp = fopen("hello.c", "r");
if(fp){
while(1){
char c = getc(fp);
if(c == EOF){
break;
}
printf("%c", c);
}
fclose(fp);
}
return 0;
}
putc
原型:int fputc(int ch,FILE*fp)
一次写一个字符
#include <stdio.h>
int main(){
FILE *fp = fopen("a.txt", "w");
if(fp){
putc('a', fp);
fclose(fp);
}
return 0;
}
fgets和fputs
详见C语言字符串相关函数
fscanf
原型:int fscanf(FILE*stream,constchar*format,[argument...])
从一个流中执行格式化输入,fscanf遇到空格和换行时结束。这与fgets有区别,fgets遇到空格不结束。
fprintf
原型:int fprintf (FILE* stream, const char*format, [argument])
fprintf( )会根据参数format 字符串来转换并格式化数据, 然后将结果输出到参数stream 指定的文件中, 直到出现字符串结束('\0')为止
stat
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main(){
struct stat st = {0};
stat("a.txt", &st);
int size = st.st_size; // 文件大小
// ...
}
fwrite
原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream)
这个函数是指,从buffer地址开始获取数据,往stream文件中写入count个size字节的内容
#include <stdio.h>
int main(){
FILE *fp = fopen("test.txt", "w");
int a = 100;
fwrite(&a, sizeof(int), 1, fp);
fclose(fp);
return 0;
}
fread
原型:size_t fread (void *buffer, size_t size, size_t count, FILE *stream)
fread返回读到的size的个数。
#include <stdio.h>
int main(){
FILE *fp = fopen("test.txt", "r");
int a = 0;
fread(&a, sizeof(int), 1, fp);
fclose(fp);
return 0;
}
fseek
原型:int fseek(FILE *stream, long offset, int fromwhere)
设置文件指针stream的位置。stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置。
ftell
原型:long ftell(FILE *stream)
使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。
fflush
原型:int fflush(FILE *stream)
fflush()会强迫将缓冲区内的数据写回参数stream 指定的文件中. 如果参数stream 为NULL,fflush()会将所有打开的文件数据更新。
remove
原型:int remove(const char *filename)
删除文件。
rename
原型:int rename(char *oldname, char *newname)
文件重命名。