C语言中的文件I/O操作可以完成文件的读写,常用的操作包括打开文件、读取文件数据和写入数据到文件。下面是一个完整的C语言文件I/O的使用攻略。
打开文件
在C语言中,可以使用函数fopen()来打开一个文件,函数原型如下:
FILE *fopen(const char *filename, const char *mode);
其中,filename表示要打开的文件名,可以是绝对路径或相对路径;mode表示打开文件的模式,包括以下几种:
- r:只读模式,打开一个已经存在的文件,文件指针指向文件开头。
- w:只写模式,打开一个文件,如果该文件存在,则将其内容清空,如果文件不存在,则创建一个新的文件。
- a:追加模式,打开一个文件,如果文件存在,则将文件指针指向文件结尾,如果文件不存在,则创建一个新的文件。
- r+:读写模式,打开一个已经存在的文件,文件指针指向文件开头。
- w+:读写模式,打开一个文件,如果该文件存在,则将其内容清空,如果文件不存在,则创建一个新的文件。
- a+:读写模式,打开一个文件,如果文件存在,则将文件指针指向文件结尾,如果文件不存在,则创建一个新的文件。
打开文件成功后,函数fopen()会返回一个指向文件结构体的指针,失败时返回NULL。使用完打开的文件后,需要使用函数fclose()关闭文件。
int fclose(FILE *stream);
读取文件
在打开文件之后,可以使用函数fread()从文件中读取数据,函数原型如下:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
其中,ptr表示读取的数据存放的缓冲区的地址;size表示每个数据项的大小;count表示需要读取的数据项个数;stream表示打开的文件指针。
如果读取成功,函数fread()会返回实际读取的数据项个数,失败时返回0。
下面是一个示例,从已经存在的文件中读取数据:
#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *fp;
int buffer[10];
int i;
fp = fopen("data.txt", "r");
if (fp == NULL) {
perror("open file error");
return -1;
}
fread(buffer, sizeof(int), 10, fp);
for (i = 0; i < 10; i++) {
printf("%d ", buffer[i]);
}
fclose(fp);
return 0;
}
写入文件
在打开文件之后,可以使用函数fwrite()向文件中写入数据,函数原型如下:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
其中,ptr表示要写入的数据的地址;size表示每个数据项的大小;count表示需要写入的数据项个数;stream表示打开的文件指针。
如果写入成功,函数fwrite()会返回实际写入的数据项个数,失败时返回0。
下面是一个示例,向文件中写入数据:
#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *fp;
int buffer[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i;
fp = fopen("output.txt", "w");
if (fp == NULL) {
perror("open file error");
return -1;
}
fwrite(buffer, sizeof(int), 10, fp);
fclose(fp);
return 0;
}
以上就是C语言文件I/O的使用攻略。