C语言:文件操作

2023-12-16 20:37:01

每日一言

If I have seen further, it is by standing on the shoulders of giants.
如果我能看得更远,是因为站在巨人的肩膀上。

文件操作

C语言文件操作主要通过文件指针进行。文件指针是一个指向文件的指针,它用于在文件中进行读写操作。在C语言中,文件指针的类型是FILE,需要通过fopen函数打开文件并返回文件指针。

文件的打开和关闭操作:

  1. fopen:打开文件

    FILE *fopen(const char *filename, const char *mode);
    

    第一个参数是文件名,第二个参数是打开文件的模式。常见的模式有:

    • “r”:只读模式,文件必须存在,如果文件不存在则打开失败。
    • “w”:只写模式,如果文件不存在则创建文件,如果文件存在则清空文件内容。
    • “a”:追加模式,如果文件不存在则创建文件,如果文件存在则在文件末尾追加内容。
    • “r+”:读写模式,打开一个已存在的文件进行读写操作
    • “w+”:读写模式,如果文件不存在则创建新文件,如果文件已存在则清空文件内容
    • “a+”:读写模式,如果文件不存在则创建新文件,如果文件已存在则在文件末尾追加内容 函数返回一个指向文件的指针,如果打开文件失败则返回NULL。
    • “rb”、“wb”、“ab”:以二进制模式打开文件。

    fopen函数打开文件成功后,返回文件指针;失败则返回NULL。

  2. fclose:关闭文件

    int fclose(FILE *stream);
    

    参数是要关闭的文件指针。关闭文件后,不再允许在该文件上进行读写操作。

文件的读写操作:

  1. fgetc:读取字符

    int fgetc(FILE *stream);
    

    参数是要读取字符的文件指针。函数返回读取的字符,如果读取成功则返回字符的ASCII码值,如果读到文件末尾则返回EOF。

  2. fputc:写入字符

    int fputc(int character, FILE *stream);
    

    第一个参数是要写入的字符的ASCII码值,第二个参数是要写入字符的文件指针。函数返回写入的字符,成功返回字符的ASCII码值,失败返回EOF。

  3. fgets:读取字符串

    char *fgets(char *str, int num, FILE *stream);
    

    第一个参数是存储读取字符串的缓冲区,第二个参数是最多读取的字符数(包括字符串结尾的’\0’),第三个参数是要读取字符串的文件指针。函数返回读取的字符串,如果读取成功则返回str指针,否则返回NULL。

  4. fputs:写入字符串

    int fputs(const char *str, FILE *stream);
    

    第一个参数是要写入的字符串,第二个参数是要写入的文件指针。函数返回写入成功的字符数,失败返回EOF。

  5. fprintf:格式化写入

    int fprintf(FILE *stream, const char *format, ...);
    

    第一个参数是要写入的文件指针,第二个参数是格式化字符串,后面可以跟着格式化参数。函数返回写入成功的字符数,失败返回EOF。

  6. fscanf:格式化读取

      int fscanf(FILE *stream, const char *format, ...);
    

    第一个参数是要读取的文件指针,第二个参数是格式化字符串,后面可以跟着要读取的变量。函数返回成功匹配和赋值的变量数,失败返回EOF。

  7. sscanf: 读取格式化输入

    int sscanf(const char *str, const char *format, ...);
    

    str为要读取数据的字符数组,format为格式字符串,后面的…表示格式字符串中的各个格式符对应的变量。

    例如:

    #include <stdio.h>
    int main() 
    {
    char str[100];
    int num;
    sprintf(str, "123");  // 将字符串"123"存储到str中
    sscanf(str, "%d", &num);  // 将str中的整数读取到num中
    printf("num: %d\n", num);  // 输出num的值
    return 0;
    }
    

    此时,name变量将得到字符串"John",age变量将得到整数20。

  8. sprintf:将格式化的数据输出到一个字符数组中。

    int sprintf(char *str, const char *format, ...);
    

    str为输出结果存放的字符数组,format为格式字符串,后面的…表示格式字符串中的各个格式符对应的变量。
    例:

    #include <stdio.h>
    int main() 
    {
    char str[100];
    int num = 123;
    
    sprintf(str, "%d", num);  // 将num的值转换为字符串并存储到str中
    
    printf("str: %s\n", str);  // 输出str的值
    
    return 0;
    }
    
  9. ftell:获取文件指针的当前位置

    long ftell(FILE *stream);
    
  10. fseek:设置文件指针的位置

    int fseek(FILE *stream, long offset, int origin);
    

    其中,stream是要定位的文件指针,offset是偏移量,origin是偏移量相对位置,可以是以下值之一:

    • SEEK_SET:从文件起始位置开始偏移
    • SEEK_CUR:从当前位置开始偏移
    • SEEK_END:从文件末尾位置开始偏移 函数返回0表示定位成功,返回非0值表示定位失败。
    1. rewind:重置文件指针
    void rewind(FILE *stream); 
    

    将已打开文件的指针重新定位到文件的开头,从而可以重新读取文件的内容。


结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


文章来源:https://blog.csdn.net/qrwitu142857/article/details/135036340
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。