我写了一个程序使用fwrite的和正确的方法使用fread
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
int r;
char arr[] = "this is the string";
char str[20] = {'\0'};
fp = fopen("fwrite.txt", "w");
fwrite(arr, 1, sizeof(arr), fp);
fseek(fp, SEEK_SET, 0);
r = fread(str, 1, sizeof(arr), fp);
if(r == sizeof(arr))
printf("read successfully\n");
else
{
printf("read unsuccessfull\n");
exit(1);
}
printf("read = %d\n", r);
printf("%s\n", str);
fclose(fp);
return 0;
}
我想以这种方式来读,但我不能这样做。这里有什么问题,是我应该把&str[i]
并为fread
运行一个循环,否则fread
能够将数据放入str
?
我越来越垃圾,我不明白为什么?
您需要'fseek(fp,0L,SEEK_SET)'。偏移量来自哪个('SEEK_SET')之前。 –
我猜你正在使用www.tutorialspoint.com作为参考,由于某些原因,他们以错误的顺序使用fseek,fread和fwrite参数。 – Dunno
你也需要在'w + b'模式下打开 –