#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#pragma warning(disable:4996)
size_t file_size(FILE *fd){
if (fd == NULL) {
printf("File not found");
return -1;
}
fseek(fd, 0, SEEK_END);
return ftell(fd);
}
int main() {
FILE *in;
FILE *out;
char buffer[2] = { 0 };
int n = 0;
in = fopen("test.txt", "rb");
if (in == NULL) {
printf("cona\n"); return -1;
}
out = fopen("out.txt", "wb");
if (out == NULL) {
printf("cona1\n"); return -1;
}
size_t size = file_size(in);
for(n = 0; n < size; n += 2){
if (fread(&buffer, sizeof(char), 2, in) !=2) {
printf("cona2 \n");
} //keeps given erros in here
fwrite(&buffer, sizeof(char), 2, out);
memset(buffer, 0, sizeof(buffer));
}
printf(" \n in: %zu \n", size);
printf(" \n out: %zu \n", file_size(out));
fclose(out);
fclose(in);
system("PAUSE");
return(0);
}
我在这里的主要问题是如果fread功能在一个循环中工作,如果我可以在文件ervytime中只询问n个元素,而不是一次性所有文件,我试试这个但它让我看错了该文件,它没有读任何东西。
答案 0 :(得分:2)
使用
找到文件大小后出现问题fseek(fd, 0, SEEK_END);
return ftell(fd);
因为在尝试从文件中读取之前,你不会回到文件的开头。
rewind(fd);
或
fseek(fd, 0, SEEK_SET);