2013-10-09 1 views
0

큰 문자열을 인쇄하고 내가 노력하고어떻게 초보자 해요

C.에서 전체 도움말 페이지를 인쇄하는 방법을 알아야합니다 :

unsigned short * entireHelpPage; 
unsigned int * someString: 
printf("comparing %s to %s", someString, entireHelpPage); 

는이 같은 뭔가를 인쇄 :

comparing Dog to Dog is a domestic animal.. blah blah.. Dogs are bred in mos 

인쇄 할 때 wholeHelpPage가 완전히 표시되지 않는 것을 볼 수 있습니다.

전체 도움말 페이지를 인쇄하는 방법을 알려주십시오.

+6

왜 문자열에'short'와'int' 포인터를 사용하고 있습니까? –

+0

C 튜토리얼을 읽으면 문자열을 선언하고 인쇄하는 방법을 알 수 있습니다. – Gangadhar

+0

응용 프로그램의 소스 코드를 살펴 보겠습니다. 그것의 사전은 이렇게 쓰여졌습니다 .. 만약 내가 그것을 바꾼다면 나는 100 개의 다른 장소에서 오류를 얻을 것입니다. – user2655793

답변

0

printf() 또는 잠재적 인 메모리/디스플레이 문제로 제한을 벗어나기 위해 루프를 사용하십시오.

OP가 일부 문제가 발생했습니다. printf()은 문제가 발생하기 전에 적어도 4095자를 인쇄 할 수 있어야합니다. 부적합한 문제를 해결하려면 루프를 사용하십시오. 예기치 않은 인쇄 할 수없는 문자를 찾으려면 특수한 방식으로 인쇄하십시오.

const char *s = (const char *) entireHelpPage; 
fputs(">", stdout); 
while (*s) { 
    if (isgraph(*s)) { 
    fputc(*s, stdout); 
    } 
    else { 
    fprintf(stdout, "[%02X]", (unsigned) *s); 
    } 
    s++; 
} 
fputs("<\n", stdout); 

또한 : 그것은 char* 데이터에 대한 포인터로 unsigned short *를 사용하는 것이 이상하다. entireHelpPage에 의해 꼬리표 메모리 포인터가 예기치 않게 코드에 의해 작성된 것으로 의심됩니다. entireHelpPage은 약 400 바이트의 버퍼이며 도움말 페이지에는 충분하지 않을 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 초심자이기 때문에 이것을 완전히 이해할 수 없다고 생각한다. 나는 그것을하는 더 간단한 방법이있을 것이라고 생각했다. 그냥 내 HelpPage를 stdout에 인쇄하고 싶습니다. – user2655793

관련 문제