C文件处理

    技术2022-07-11  106

    文件类型指针 FILE *fp – 文本文件:r只读、w只写 二进制文件:rb只读、wb只写

    打开文件

    *fp = fopen(“文件名”,“方式”);

    如:fp = fopen("file1.txt" , "r"); –

    关闭文件

    *fp = fclose(“文件名”);

    如:fclose(fp);–


    必须加: if(fp == NULL) { perror(“打开文件时发生错误”); exit(1); 或 return(-1); }


    文本文件

    fputc(int char, FILE *stream) : 把参数 char 指定的字符(一个无符号字符)写入到给定流 stream中,并把位置标识符往前移动。 fputc("这是 C 语言。\n",fp);–顺序写入

    fgetc(FILE *stream) : 从给定流 stream获取下一个字符(一个无符号字符),并把位置标识符往前移动。 int c = fgetc(fp);–顺序读取

    二进制文件

    rewind(FILE *stream) : 设置文件位置为给定流 stream 的文件的开头。 rewind(fp);–

    fscanf(FILE *stream, const char *format, …) : 从给定流 stream 读取格式化输入。 如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。 fscanf(fp, "%s %s %s %d", str1, str2, str3, &year); --读取

    注:EOF 是end of file的缩写。 “!=EOF” 表示文件还没有结束,“=EOF” 表示到文件末尾了。 你在用函数读入文件数据的时候,函数总会返回一个状态,是读取成功还是失败,那么这个状态怎么表示呢,所以就约定俗成定义一个标识符表示这个状态,就有了EOF

    fprintf(FILE *stream, const char *format, …) 发送格式化输出到流 stream 中。 fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);–写入

    打开文件,就是建立文件缓冲区。关闭文件,就是要强制 地把文件缓冲区中的内容写到磁盘文件中。

    源代码1 fputc

    FILE *fp; fp=fopen("file1.txt","w"); if(fp==NULL){ printf("open error!\n"); exit(1); } fputc("这是 C 语言。\n",fp); fputc("这是一种系统程序设计语言。\n",fp); fclose(fp);

    运行结果1 fputc

    出现了相应的文本文件:

    文件内容 : 这是 C 语言。 这是一种系统程序设计语言。

    源代码2 fgetc

    int main () { FILE *fp; int c; int n = 0; fp = fopen("file.txt","r"); if(fp == NULL) { perror("打开文件时发生错误"); return(-1); } do { c = fgetc(fp); if( feof(fp) ) { break ; } printf("%c", c); }while(1); fclose(fp); return(0); }

    运行结果2 fgetc

    file.txt文件中内容 : We are in 2014 -

    源代码3 fscanf

    int main() { char str1[10], str2[10], str3[10]; int year; FILE * fp; fp = fopen ("file.txt", "w+"); fputs("We are in 2014", fp); rewind(fp); fscanf(fp, "%s %s %s %d", str1, str2, str3, &year); printf("Read String1 |%s|\n", str1 ); printf("Read String2 |%s|\n", str2 ); printf("Read String3 |%s|\n", str3 ); printf("Read Integer |%d|\n", year ); fclose(fp); return(0); }

    运行结果3 fscanf

    Read String1 |We| Read String2 |are| Read String3 |in| Read Integer |2014|

    源代码4 fprintf

    int main() { FILE * fp; fp = fopen ("file.txt", "w+"); fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014); fclose(fp); return(0); }

    运行结果4 fprintf

    将创建文件 file.txt,它的内容: We are in 2014 -

    Processed: 0.009, SQL: 9