文本文件:存放在内存的数据转换成相对应的ASCI字符。 二进制文件:内存里怎么存的,磁盘里也是怎么存的。(不需要转换)其读写要快:无须转化
对文件的操作:open read write close。
int main() { FILE *fp1 = fopen("test1.txt", "w");//失败返回NULL 成功 FILE *fp2 = fopen("test2.txt", "r");//失败 FILE *fp3 = fopen("test3.txt", "a");//成功 return 0; }相对路径:当前程序的目录下。 绝对路径:明确的路径。 路径不合法,创建不成功。
“W”: 不存在则创建文件;若存在则全部清空。文件还在,内容变了(重新写) “A”:不存在则创建文件;若存在则从最后面接着写 “R”:没有则失败;有文件只能读 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 文本文件:
int main() { int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int n = sizeof(array) / sizeof(array[0]); FILE *fp = fopen("test1.txt", "w");//失败返回NULL 成功 if (nullptr == fp) { cout << "Open file error" << endl; return -1; } for (int i = 0; i < n; ++i) { printf("%d ", array[i]); fprintf(fp, "%d ", array[i]); fprintf(stdout, "%d ", array[i]);//可以屏幕看成一个文件 } fclose(fp); fp = nullptr; return 0; }printf函数底层调用的还是fprintf(stdout, "%d ", array[i]); 此时的1 2 3 等是ASCI码了, <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 二进制文件: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 读文本文件:
int main() { int array[10]; const int n = 10; FILE *fp = fopen("test1.txt", "r"); if (nullptr == fp) { cout << "Open file error" << endl; return -1; } for (int i = 0; i < n; ++i) { fscanf(fp, "%d ", &array[i]); } fclose(fp); fp = nullptr; return 0; }读:二进制文件
int main() { int array[10]; const int n = 10; FILE *fp = fopen("test1.txt", "rb"); if (nullptr == fp) { cout << "Open file error" << endl; return -1; } fread(array,sizeof(int),n,fp); fclose(fp); fp = nullptr; return 0; }1的ASCI码是31 空格的ASCI码是20 2的ASCI码是32 3的ASCI码是33 4的ASCI码是34 5的ASCI码是35 6的ASCI码是36 7的ASCI码是37 8的ASCI码是38 9的ASCI码是39 这里的10已经变成了两个字符 1和0,因此39 之后20(空格) 再下来是31(1的ASCI)和30(0的ASCI)
注:最后还显示了一个 20(空格),是因为我在写入的时候是 “%d ”的,后面有个空格。 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 读取当前文件:
int main() { char ch; FILE *fp = fopen("源.cpp", "r"); if (nullptr == fp) { cout << "Open file error" << endl; return -1; } while (!feof(fp)) { ch = fgetc(fp); cout << ch; Sleep(100); } fclose(fp); fp = nullptr; return 0; } int main() { char buff[256]; FILE *fp = fopen("源.cpp", "r"); if (nullptr == fp) { cout << "Open file error" << endl; return -1; } while (!feof(fp)) { fgets(buff,256,fp);//读入255 +\0 cout << buff; Sleep(100); } fclose(fp); fp = nullptr; return 0; }<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
int main() { const int n = 10; char buff[n]; FILE *fp = fopen("源.cpp", "r"); if (nullptr == fp) { cout << "Open file error" << endl; return -1; } while (!feof(fp)) { fgets(buff,n,fp); cout << buff; Sleep(100); } fclose(fp); fp = nullptr; return 0; }![在这里插 最后一位放 \0。