2012-10-28 4 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 인코딩에서 하나의 문자 (대개)를 나타냅니다. 그러나 유니 코드를 다루는 경우 이상하게됩니다. –

+1

@ user1781308 - 왜 그렇게 잔인하게 걷잡을 수 있는지 모르겠습니다. 죄송합니다 : (.) ​​몇 가지 의견 : 1) char는 int가 아닙니다. 그러나 둘 다 정수 값입니다. 2) "버퍼"는 전통적으로 바이트 배열입니다. 그러나 그들은 필요하지 않습니다. 버퍼는 double [], some_struct [] 또는 귀하의 경우 int [] 일 수 있습니다. 3) "fread()"는 다른 요소 너비의 버퍼를 수용 할 수 있습니다 (예 : int 대 char). 저수준 "read()"및 "write() - 또는 소켓 읽기 및 쓰기 - 바이트 버퍼 만 기대합니다."도움이 되길 바랍니다. – paulsm4

답변

3

매우 간단하게 : 바이트를 읽으려는 경우 char 배열을 사용합니다.

텍스트 문자열 또는 (더 일반적으로) 2 진 개체입니다.

"바이트"는 일반적으로 "int"의 1/4 크기입니다.

또한 "읽기"및 "쓰기"소켓 수는 바이트 수입니다. 오래 전부터 규칙에 따라 바이트 버퍼가 필요할 것으로 예상됩니다.

'도움이 되길 바랍니다!

+0

만약 int 배열을 사용하여 버퍼를 만들려한다면 .. –

+0

:) 당신의 fread() 예제는 정확히 그런 것입니다. 위의 내 노트를보십시오. – paulsm4

+1

당신의 도움에 감사드립니다 .. :) –

0

C 언어의 char은 정확하게 1 바이트입니다. 따라서 바이트 단위로 파일에 기록하는 것은 논리적입니다.

+0

작은 수정 - 바이트가 8 비트가 될 필요가 없습니다 * 요구 사항 : http://en.wikipedia.org/wiki/Byte – paulsm4

관련 문제