C语言文件

C语言文件

文件创建与关闭:

  • 创建指针文件FILE*myfile

  • 调用fopen(”文件名称“,”打开方式“)打开文件

  • 调用fclose(文件指针变量) 关闭文件

#include<stdio.h>
int main(){
    FILE*myfile;
    myfile=fopen("文件名称",'w');//r表示只读,w表示只写,a表示附加,+表示既要写又要读
    if(myfile!=NULL){
      //具体文件操作
}
    fclose(myfile);//千万不能忘记
}

文件写入,给文件中送内容

  • fputs("this is input ",文件指针变量); 写入字符串

  • fputc(‘A’,文件指针变量);写入字符

  • fprintf(文件指针,"%d%d",a,b); 文件指针+printf部分 a,b是需要放到文件中的

文件输出,读文件

  • fgetc(文件指针),每次调用取一个字符
FILE*fp;
fp=fopen("filename","r");
int ch;
while((ch=fgetc(fp))!=EOF){
    putchar(ch);
}
  • fgets(str,n,文件指针) 从文件流中读取最多 n-1 个字符,或者遇到换行符时停止。读取的字符串以 \0(空字符)结尾。 str是接变量的
    str 存储取到的字符串 n表示最大字符数
char buffer[100];  // 用于存储读取到的字符串
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);  // 输出每一行
    }
  • fscanf(文件指针,"%d",&a);//a也是接变量的。
 int id;
    char name[50];
    float score;

    while (fscanf(file, "%d %s %f", &id, name, &score) == 3) {
        printf("ID: %d, Name: %s, Score: %.2f\n", id, name, score);
    }

    fclose(file);
    return 0;
    • 如果 fscanf 根据格式化字符串成功读取了 3个字段%d%s%f),它的返回值就是 3
    • 如果未能成功读取 所有字段(例如,文件行中数据格式不符合预期,或者已经到达文件末尾),返回值会小于 3
    • 如果发生错误(如文件读取失败),返回值可能是 EOF-1)。

文件的随机读写

文件中的内部指示器:指示器记录了文件中“当前读取/写入的字节位置”。每次读写操作完成后,位置指示器会自动向前移动。通过特定函数,可以手动修改这个位置指示器的位置。

  • ftell(文件指针):用于获取位置指示器当前所在的位置(相对于文件开头的字节数)。
FILE *file = fopen("example.txt", "r");
printf("当前位置: %ld\n", ftell(file)); // 输出当前位置,初始值为 0
  • fseek(文件指针,偏移量,起始位置): 主要用于移动指针
FILE *file = fopen("example.txt", "r");
fseek(file, 10, SEEK_SET); // 将指示器移动到文件开头之后的第10个字节
//SEEK_SET:从文件开头开始偏移。0
//SEEK_CUR:从当前位置开始偏移。1
//SEEK_END:从文件末尾开始偏移。2
  • rewind(文件指针) 用于将位置指示器快速重置到文件开头。
posted @ 2024-12-25 10:00  RAY5-2  阅读(47)  评论(0)    收藏  举报