2015-12-09 42 views

回答

3

getc將字符讀入c。所以第一個字符將被存儲到c中,而下一個將會是第二個字符。

然後fread將一串字符(其中的count)讀入到由ptr指向的內存中。所以第二,第三,...,第+ 1個字符將被存儲到該存儲器中。

然後fwrite寫他們(當然)。

(那麼你的程序重複這個直到它到達文件的末尾)

1

假設從文件輸出到文件的輸入正常工作,這裏有一些問題,你提供的代碼塊:

  • 您聲明ptr(int*)malloc(count)。問題是,ptr在這裏被視爲一個整數數組,這意味着每個元素的大小都是4字節而不是1,所以count必須是4的倍數。如果要使用ptr來存儲char符號,請將其更改到ptr = (char*)malloc(count)ptr = (int*) malloc(sizeof(int) * count)如果你的'符號'實際上是4字節整數;

  • 您將字符讀入變量c,但您沒有使用它。

  • 根據this descriptionfreadfwrite的第二個參數是元素的大小,第三個參數是要讀取/寫入的元素的數量。

  • 如果你想要做fread到文件結束,就沒有必要做while ((c=getc(in)) != EOF)...,只要按照this stackoverflow post

希望這有助於。

相關問題