引言:
在C语言中,文件操作是一项非常重要的编程技术。本篇博客将详细介绍关于文件操作的相关知识,包括fopen、fclose、fputc、fgetc、fputs、fgets、fprintf、fscanf、sprintf、sscanf、fread和fwrite函数的用法,并通过实例说明它们的具体应用。同时,还将分析fprintf、fscanf、sprintf和sscanf函数与printf和scanf函数之间的不同之处。
一、 fopen函数和fclose函数
fopen
函数用于打开文件,并返回一个指向该文件的指针。它接受两个参数:文件名和打开模式。
示例:
FILE* filePointer;
filePointer = fopen("example.txt", "r");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
...
fclose(filePointer);
fclose
函数用于关闭之前打开的文件。它的参数是一个指向文件的指针。
二、 fputc函数和fgetc函数
fputc
函数用于将一个字符写入文件。
示例:
FILE* filePointer;
filePointer = fopen("example.txt", "w");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
char ch = 'A';
fputc(ch, filePointer);
...
fclose(filePointer);
fgetc
函数用于从文件中读取一个字符。
示例:
FILE* filePointer;
filePointer = fopen("example.txt", "r");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
char ch = fgetc(filePointer);
...
fclose(filePointer);
三、 fputs函数和fgets函数
fputs
函数用于将一个字符串写入文件。
示例:
FILE* filePointer;
filePointer = fopen("example.txt", "w");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
char str[] = "Hello, World!";
fputs(str, filePointer);
...
fclose(filePointer);
fgets
函数用于从文件中读取一行字符串。
示例:
FILE* filePointer;
filePointer = fopen("example.txt", "r");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
char str[100];
fgets(str, 100, filePointer);
...
fclose(filePointer);
四、fprintf函数和fscanf函数
fprintf
函数用于将格式化的输出写入文件。
示例:
FILE* filePointer;
filePointer = fopen("example.txt", "w");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
int age = 25;
fprintf(filePointer, "年龄:%d岁", age);
...
fclose(filePointer);
fscanf
函数用于从文件中读取格式化的输入。
示例:
FILE* filePointer;
filePointer = fopen("example.txt", "r");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
int age;
fscanf(filePointer, "年龄:%d岁", &age);
...
fclose(filePointer);
五、 sprintf函数和sscanf函数
sprintf
函数用于将格式化的字符串输出到一个字符数组。
示例:
char str[100];
int age = 25;
sprintf(str, "年龄:%d岁", age);
sscanf
函数用于从一个字符串中读取格式化的输入。
示例:
char str[] = "年龄:25岁";
int age;
sscanf(str, "年龄:%d岁", &age);
六、fread函数和fwrite函数
fread
函数用于从文件中读取二进制数据。
示例:
FILE* filePointer;
filePointer = fopen("example.bin", "rb");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
int numbers[5];
fread(numbers, sizeof(int), 5, filePointer);
...
fclose(filePointer);
fwrite
函数用于将二进制数据写入文件。
示例:
FILE* filePointer;
filePointer = fopen("example.bin", "wb");
if (filePointer == NULL) {
// 文件打开失败
printf("无法打开文件!");
exit(1);
}
int numbers[5] = {1, 2, 3, 4, 5};
fwrite(numbers, sizeof(int), 5, filePointer);
...
fclose(filePointer);
七、fprintf、fscanf、sprintf和sscanf与printf和scanf的不同
-
fprintf
、fscanf
、sprintf
和sscanf
函数是用于文件的版本,而printf
、scanf
函数是用于控制台的版本。 -
fprintf
用于将格式化的输出写入文件,而printf
将输出发送到控制台。 -
fscanf
用于从文件中读取格式化的输入,而scanf
从控制台读取输入。 -
sprintf
用于将格式化的字符串输出到一个字符数组,而printf
将格式化的字符串输出到控制台。 -
sscanf
用于从一个字符串中读取格式化的输入,而scanf
从控制台读取输入。
总结:
文件操作是C语言中必不可少的一部分,掌握了fopen、fclose、fputc、fgetc、fputs、fgets、fprintf、fscanf、sprintf、sscanf、fread和fwrite函数的使用,可以实现读写文件和二进制数据。同时,了解fprintf、fscanf、sprintf和sscanf函数与printf和scanf函数之间的不同之处,可以灵活应用于不同的场景中。
希望本篇博客对您有所帮助,谢谢阅读!