我寫了一個程序使用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'模式下打開 –