2012-10-28 62 views
1

爲什麼我們使用char數組在內存中創建緩衝區而不是int數組,並且如果int數組可用於創建緩衝區,如何從中獲取輸出?爲什麼我們使用char數組來創建緩衝區

int main() 
{ 
    char buffer[100]; 
    fread(buffer,sizeof(int),4,stdin); 
    int i=0; 
    while(i<4) 
    { 
     printf ("%d,\n",buffer[i]); 
     i=i+1; 
    }  
} 
+2

我們使用'char'是因爲它合乎邏輯。根據ANSI C,它代表了ASCII編碼中的一個字符(通常)。但是,如果您處理Unicode,情況會變得很奇怪。 –

+1

@ user1781308 - 我不確定你爲什麼被如此殘酷地踢倒。對不起:(。一些評論:1)一個字符不是一個整數。但都是不可或缺的價值。 2)「緩衝區」傳統上是字節數組。但他們不需要*。你的緩衝區可以是double [],some_struct []或者在你的情況下是int []。 3)「fread()」可以容納不同元素寬度的緩衝區(比如int和char)。低級別的「read()」和「write() - 或套接字的讀寫操作 - 只需要字節緩衝區。」希望能夠幫助.. – paulsm4

回答

3

非常簡單:如果我們想要讀取字節,我們使用char數組。

無論是文本字符串還是(更一般地)二進制對象。

「字節」通常是「int」的四分之一大小。此外,套接字「讀取」和「寫入」計數是字節計數。按照長期慣例,他們期望字節緩衝區。

'希望有幫助!

+0

如果我想用int數組創建緩衝區..? –

+0

你可以:)你的fread()例子完全是這樣的,看看我上面的註釋,然而, – paulsm4

+1

非常感謝你的幫助.. :) –

0

因爲charC語言正好是1個字節。所以按字節寫入文件是合乎邏輯的。

+0

小修正 - 沒有*要求*一個字節爲8位: http://en.wikipedia.org/wiki/Byte – paulsm4

相關問題