欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 文件读取和输入输出

文件读取和输入输出

2025/2/25 1:08:28 来源:https://blog.csdn.net/m0_72030584/article/details/145144621  浏览:    关键词:文件读取和输入输出

文件指针

在C语言中,文件操作是通过文件指针来进行的。文件指针是一个指向 FILE 结构的指针,用于标识和操作一个文件。

FILE *fp;

常用的文件操作函数

  1. fopen:打开文件。
  2. fclose:关闭文件。
  3. fread:从文件中读取数据。
  4. fwrite:向文件中写入数据。
  5. fscanf 和 fprintf:格式化读取和写入。
  6. fgets 和 fputs:读取和写入字符串。
  7. fseek:设置文件指针的位置。
  8. ftell:获取文件指针的位置。

打开文件 (fopen)

fopen 函数用于打开文件,并返回一个文件指针。如果打开失败,返回 NULL

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

常用模式:

  1. "r":只读模式。
  2. "w":写模式,文件不存在则创建,存在则清空。
  3. "a":追加模式,文件不存在则创建。
  4. "r+":读写模式,文件必须存在。
  5. "w+":读写模式,文件不存在则创建,存在则清空。
  6. "a+":读写追加模式,文件不存在则创建。

关闭文件 (fclose)

fclose 函数用于关闭文件,释放资源。

int fclose(FILE *fp);

读取文件

fread

fread 函数从文件中读取数据到缓冲区。

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

fscanf

fscanf 函数从文件中读取格式化数据。

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

fgets

fgets 函数从文件中读取一行字符串。

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

写入文件

fwrite

fwrite 函数向文件中写入数据。

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

fprintf

fprintf 函数向文件中写入格式化数据。

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

fputs

fputs 函数向文件中写入字符串。

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

文件指针操作

fseek

fseek 函数设置文件指针的位置。

int fseek(FILE *stream, long offset, int whence);
//SEEK_SET:文件开头。
//SEEK_CUR:当前位置。
//SEEK_END:文件末尾。

ftell

ftell 函数获取当前文件指针的位置。

long ftell(FILE *stream);

错误处理

文件操作过程中可能会遇到错误,常用的错误处理函数包括:

  • ferror:检查文件指针是否有错误。
  • feof:检查文件指针是否到达文件末尾。
  • perror:打印错误信息。

读取文件内容并打印

#include <stdio.h>int main() {FILE *fp = fopen("example.txt", "r");if (fp == NULL) {perror("Error opening file");return -1;}char buffer[100];while (fgets(buffer, 100, fp) != NULL) {printf("%s", buffer);}fclose(fp);return 0;
}

向文件写入数据

#include <stdio.h>int main() {FILE *fp = fopen("output.txt", "w");if (fp == NULL) {perror("Error opening file");return -1;}fprintf(fp, "Hello, World!\n");fputs("This is a test.\n", fp);fclose(fp);return 0;
}

总结

fopen打开文件,并返回文件指针FILE *fopen(const char *filename, const char *mode);FILE *fp = fopen("file.txt", "r");
fread从文件中读取数据到缓冲区size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);fread(buffer, sizeof(char), 100, fp);
fscanf从文件中读取格式化输入int fscanf(FILE *stream, const char *format, ...);fscanf(fp, "%d", &num);
fgets从文件中读取一行字符串char *fgets(char *str, int n, FILE *stream);fgets(buffer, 100, fp);
fgetc从文件中读取一个字符int fgetc(FILE *stream);char c = fgetc(fp);
fseek设置文件指针的位置int fseek(FILE *stream, long offset, int whence);fseek(fp, 0, SEEK_SET);
ftell获取文件指针的位置long ftell(FILE *stream);long pos = ftell(fp);
fclose关闭文件,释放资源int fclose(FILE *fp);fclose(fp);
feof检查文件指针是否到达文件末尾int feof(FILE *stream);if (feof(fp)) { /* End of file */ }
ferror检查文件指针是否有错误int ferror(FILE *stream);if (ferror(fp)) { /* Handle error */ }
perror打印错误信息void perror(const char *str);perror("Error opening file");

打开并读取文件

#include <stdio.h>int main() {FILE *fp;char buffer[100];int num;// 打开文件fp = fopen("example.txt", "r");if (fp == NULL) {perror("Error opening file");return -1;}// 使用 fgets 读取一行字符串if (fgets(buffer, 100, fp) != NULL) {printf("Read string: %s\n", buffer);}// 使用 fscanf 读取格式化输入if (fscanf(fp, "%d", &num) == 1) {printf("Read integer: %d\n", num);}// 关闭文件fclose(fp);return 0;
}

使用 fread 读取二进制文件

#include <stdio.h>int main() {FILE *fp;char buffer[100];size_t bytesRead;// 打开二进制文件fp = fopen("example.bin", "rb");if (fp == NULL) {perror("Error opening file");return -1;}// 使用 fread 读取数据到缓冲区bytesRead = fread(buffer, sizeof(char), 100, fp);printf("Bytes read: %zu\n", bytesRead);// 关闭文件fclose(fp);return 0;
}

输入输出

printf格式化输出到标准输出(通常是屏幕)向控制台打印各种格式化的数据printf("Hello, World!\n");
scanf从标准输入(通常是键盘)读取格式化输入从用户输入获取各种格式化的数据scanf("%d", &num);
getchar从标准输入读取单个字符读取单个字符char c = getchar();
putchar向标准输出写入单个字符输出单个字符putchar('A');

printf 示例

printf 用于格式化输出,可以打印整数、浮点数、字符串等。

#include <stdio.h>int main() {int num = 10;float f = 3.14;char str[] = "Hello, World!";// 使用 printf 打印各种类型的数据printf("Integer: %d\n", num);printf("Float: %.2f\n", f);printf("String: %s\n", str);return 0;
}

scanf 示例

scanf 用于格式化输入,可以从用户输入获取整数、浮点数、字符串等。

#include <stdio.h>int main() {int num;float f;char str[50];// 提示用户输入数据printf("Enter an integer: ");scanf("%d", &num);printf("Enter a float: ");scanf("%f", &f);printf("Enter a string: ");scanf("%s", str);// 打印用户输入的数据printf("You entered: %d, %.2f, %s\n", num, f, str);return 0;
}

getchar 示例

getchar 用于读取单个字符,可以用于处理字符输入

#include <stdio.h>int main() {char c;// 提示用户输入一个字符printf("Enter a character: ");c = getchar();// 打印用户输入的字符printf("You entered: %c\n", c);return 0;
}

putchar 示例

putchar 用于输出单个字符,可以用于处理字符输出

#include <stdio.h>int main() {char c = 'A';// 输出字符printf("Character output: ");putchar(c);putchar('\n');return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词