C语言-文件操作
fopen() 文件的打开操作,这里有两种模式,第一种读操作,第二种写操作
/* 文件操作演示 */ #include <stdio.h> int main() { FILE* p_file = fopen("a.txt", "w"); //以写的方式打开文件 if (!p_file) { printf("文件打开失败"); return -1; } fclose(p_file); p_file = NULL; return 0; }
使用fopen()进行读操作,使用fwrite进行写操作, fwrite(arr, sizeof(int), 5, p_file);
/* 文件演示操作 */ #include <stdio.h> int main() { int arr[5] = {0, 1, 2, 3, 4}; FILE *p_file = NULL; p_file = fopen("a.txt", "w"); if(p_file) { fwrite(arr, sizeof(int), 5, p_file); fclose(p_file); p_file = NULL; return 0; } return -1; }
使用fopen()进行打开,使用fread() 进行文件的读操作
/* fread 文件读取设置 */ #include <stdio.h> int main() { int arr[10] = {0}; int size = 0; FILE* p_file = NULL; p_file = fopen("a.txt", "rb"); if (p_file) { size = fread(arr, sizeof(int), 10, p_file); for(int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } return 0; }
使用fprintf进行单个字符串的写入操作
/* 将数据写入到文件中 */ #include <stdio.h> #include <string.h> int main() { char tmp[10] = {0}; //定义字符串 int arr[10] = {0, 1, 2, 3, 4}; FILE *p_file = NULL; p_file = fopen("a.txt", "w"); if(p_file) { for (int num = 0; num < sizeof(arr);num++){ /*sprintf(tmp, "%d ", arr[num]); fwrite(tmp, sizeof(char), strlen(tmp), p_file); */ fprintf(p_file, "%d ", arr[num]); } fclose(p_file); p_file = NULL; } }
使用fscanf从文件中读取数据,使用scanf(p_file, "%d ", val) 读取数据
/* fscanf 从文件中获取数据 */ #include <stdio.h> int main() { int val = 0; int arr[10] = {0}; int num = 0; FILE *p_file = NULL; p_file = fopen("a.txt", "rb"); if(p_file) { for (num = 0;num < 5;num++) { fscanf(p_file, "%d ", &val); //"%d" 表示读取方式,光标向下移动 printf("%d ", val); arr[num] = val; } printf("\n"); } for(num = 0;num < 5;num++) { printf("%d ", arr[num]); } printf("\n"); }
使用rewind将数据指针移动到文件的开头, ftell打印出当前的光标位置,fseek进行光标的移动
/* 位置指针演示 */ #include <stdio.h> int main() { char ch = 0; FILE *p_file = NULL; p_file = fopen("abc.txt", "rb"); if (p_file) { // rewind(p_file); //把位置指针移动到文件开头(把代表位置指针的数值设置成0) fseek(p_file, 2, SEEK_SET); printf("%ld\n", ftell(p_file)); //获得位指针数值并把结果显示在屏幕上 fread(&ch, sizeof(char), 1, p_file); //进行数据的读取 //从文件里获得一个字符数组 // rewind(p_file); fseek(p_file, 3, SEEK_CUR); printf("%c\n", ch); printf("%ld\n", ftell(p_file)); fread(&ch, sizeof(char), 1, p_file); //从文件里获得一个字符数组 // rewind(p_file); fseek(p_file, -3, SEEK_END); printf("%c\n", ch); printf("%ld\n", ftell(p_file)); fread(&ch, sizeof(char), 1, p_file); //从文件里获得一个字符数组 fclose(p_file); p_file = NULL; } return 0; }
编写数据进行写入,这里主要使用两种方法,第一种使用fwrite和fread进行组合获得输入数组,第二种方法使用fprintf 和 fscanf 进行文件的写入操作
文件写入:
/* 将字符串写入到文件中 */ #include <stdio.h> int main() { int arr[][5] = {1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5}; int i = 0; int j = 0; FILE *p_file = NULL; p_file = fopen("b.bin", "wb"); if (p_file) { /* 方式一 fwrite(arr, sizeof(int), 25, p_file); */ //方式二 for (i = 0;i < 5;i++) { for (j = 0;j < 5;j++) { fprintf(p_file, "%d ", arr[i][j]); } } fwrite("\n", sizeof(int), 4, p_file); fclose(p_file); p_file = NULL; } }
文件读取
/* 从文件中获得二维数组 */ #include <stdio.h> int main() { int num = 0; int i = 0; int j = 0; int arr[5][5] = {0}; FILE * p_file = NULL; p_file = fopen("b.bin", "rb"); if (p_file) { /* 第一种方式 for (i = 0;i < 5;i++){ fread(arr[i], sizeof(int), 5, p_file); } */ //第二种方式 for (i = 0;i < 5;i++) { for (j = 0;j < 5;j++) { //这个和读取的方式需要进行配套 fscanf(p_file, "%d ", &arr[i][j]); } } for (i = 0;i < 5;i++) { for (j = 0;j < 5;j++) { printf("%d ", arr[i][j]); } printf("\n"); } fclose(p_file); p_file = NULL; } }
每天更新pyQt5内容