이 작동하지 않습니다unsigned char를 sprintf하는 방법?
unsigned char foo;
foo = 0x123;
sprintf("the unsigned value is:%c",foo);
나는이 오류가 발생합니다 :
cannot convert parameter 2 from 'unsigned char' to 'char'
이 작동하지 않습니다unsigned char를 sprintf하는 방법?
unsigned char foo;
foo = 0x123;
sprintf("the unsigned value is:%c",foo);
나는이 오류가 발생합니다 :
cannot convert parameter 2 from 'unsigned char' to 'char'
에서 printf ("% U ','C ');
이 작동합니다, 대신 sprintf – Christoferw
대신 printf 사용해야합니다. 나는 "% u"의 예제를 제공하기 위해 sprintf가 아니라 printf를 호출합니다. char. – Ariel
편집
snprintf
좀 더 안전합니다. 올바른 버퍼 크기가 사용되는지는 개발자의 몫입니다.
이 시도 :
char p[255]; // example
unsigned char *foo;
...
foo[0] = 0x123;
...
snprintf(p, sizeof(p), " 0x%X ", (unsigned char)foo[0]);
단지 예제 일뿐입니다. 무언가의 부호없는 문자로 sprintf해야합니다 .p는 문자열 버퍼 –
입니다. 이 오류 : 첨자에는 배열 또는 포인터 유형이 필요합니다. – Christoferw
코드가 더 필요합니다. –
나는 당신의 방법으로 혼란 스럽다고 생각합니다. sprintf
작품. 첫 번째 매개 변수는 문자열 버퍼이고 두 번째 매개 변수는 서식 지정 문자열이며 출력 할 변수입니다. 문제를 일으키는 서명되지 않은 문자보고 떨어져 가기 전에
,이 라인에 대해 자세히 살펴 :
sprintf("the unsigned value is:%c",foo);
sprintf와의 첫 번째 인수는 항상 값이 인쇄되는 문자열입니다. 그 줄은 다음과 같아야합니다 :
sprintf(str, "the unsigned value is:%c",foo);
sprintf 대신 printf를 사용하는 경우가 아니면.
고정 된 후 형식 문자열에서 % u를 사용하여 부호없는 유형의 값을 인쇄 할 수 있습니다.
sprintf를 사용하면 버퍼 오버플로가 쉽게 발생할 수 있으므로 사용하지 마십시오.
Microsoft 표준 C 라이브러리로 프로그래밍 할 때 snprintf (또는 _snprintf)를 선호해야합니다. 로컬 함수의 스택에 버퍼를 할당 한 경우, 당신은 할 수 있습니다 :
char buffer[SIZE];
snprintf(buffer, sizeof(buffer), "...fmt string...", parameters);
데이터는 잘립니다받을 수 있지만, 버퍼 오버 플로우에 확실히 바람직하다.
매개 변수 2를 '부호없는 char'에서 'char *'로 변환 할 수 없습니까? –
sprintf()에 대한 매개 변수가 없습니다. 첫 번째 매개 변수는 출력 버퍼이고 두 번째 매개 변수는 출력 버퍼입니다 문자열이 남아있다. 나머지는 모두 포맷 문자열에 의존한다. 단지 std에 프린트하고 싶다면 printf()를 사용한다. (처음에는 's'를 쓰지 않는다.) –
isalnum (..) '문자 값을 임의로 인쇄하는 대신 실제 16 진 값 대 모든 문자가 0x01과 같은 16 진수 값을 표시하지는 않습니다. –