文件
输入流、输出流。
1.读取数据:fgetc读取字节。一次读取一个字符,读不到返回-1
fread:一次读取多个。
int main() {
// 只读方式打开文件。
FILE* file = fopen("C:\\Users\\1\\Desktop\\a.txt", "r");
int c;
while((c = fgetc(file) != -1){
int c = fgetc(file);
printf("%c", c);
}
fclose(file);
return 0;
}
2.fgets 一次读一行数据,以换行符为准,读不到返回null。
FILE* file = fopen("C:\\Users\\1\\Desktop\\a.txt", "r");
char arr[1024];
char *res;
while(( res = fgets(arr, 1024, file)) != NULL) {
printf("%s", res);
}
fclose(file); // 关闭文件。
3.fread 一次读取多个。
英文1个字节;win64系统,汉字默认2个字节;无有效数据了,返回0.
FILE* file = fopen("C:\\Users\\1\\Desktop\\a.txt", "r");
char arr[1024];
int n;
while((n =fread(arr,1,1024, file)) !=0 ) {
for(int i=0; i<n; i++) {
printf("%c", arr[i]);
}
}
fclose(file);
4.写出数据。w,wb,ab,a
r+ 允许读和写;w+允许读写;a+允许读写。
fputc: 一次写入一个字符,返回写出的字符
fputs:一次写入一个字符串,写出成功返回非负数,一般忽略返回值。
fwrite:一次写多个,返回写出的个数。
FILE* file = fopen("C:\\Users\\1\\Desktop\\a.txt", "w");
int ch = fputc(97, file);
printf("%c", ch);
int n= fputc("您好嵌入式", file);
char arr[]={97,98,99,100,101}; //abcde
int n2 = fwrite(arr, 1, 5, file);
printf("%d\n", n2);
fclose(file);
5.拷贝文件。
FILE *file1 = fopen("c:\\Users\\1\\Desktop\\a.txt", "rb");
FILE *file2 = fopen("c:\\Users\\1\\Desktop\\b.txt", "wb");
char arr[1024];
int n ;
while((n= fread(arr, 1, 1024, file1)) != 0) {
// 读取到的数据,写到目的地。循环读写数据。
fwrite(arr, 1, n, file2);
}
fclose(file1);
fclose(file2);