C에서 문자열을 처음 8 자로 제한하고 싶습니다. 예를 들면 다음과 같습니다.C에서 제한 출력
char out = printf("%c", str);
어떻게하면 처음 8 자만 반환합니까?
C에서 문자열을 처음 8 자로 제한하고 싶습니다. 예를 들면 다음과 같습니다.C에서 제한 출력
char out = printf("%c", str);
어떻게하면 처음 8 자만 반환합니까?
당신은 형식 지정자의 정밀도를 설정하여 길이를 제한 할 수 있습니다
printf("%.8s", str);
이 널 종료 문자열에서
에 최대 8 개 문자를 인쇄 할 것이다는 지적-에
str
에 의해.
str
길이가 8 자 미만이면 전체 문자열을 인쇄합니다. null로 끝나는 문자열에 대한 형식 지정자는
%s
하지
%c
(
%c
은 하나의
char
을 인쇄하는 것입니다), 그
printf
는
int
(인쇄 된 문자의 총 수를) 반환이 아닌
char
입니다
하는 것으로.
아니요
올바르지 않습니다. 표본 인쇄 "% 8s"는 주어진 예와 같이 최대 8 칸을 인쇄합니다. 잘라 내지 않습니다. ISOC99. 이것이 창문 일 뿐이라면, MS는 많은 것을 무시하고 세상을 무시합니다. 문자열의 길이가 표보다 길면 전체 문자열이 인쇄됩니다. 참조 : GCC 3.4.2에서
int main()
{
char tmp[]="123456789";
printf("1 %1s\n", tmp);
printf("2 %2s\n", tmp);
printf("4 %4s\n", tmp);
printf("8 %8s\n", tmp);
printf("16 %16s\n", tmp);
printf("32 %32s\n", tmp);
return 0;
}
출력을 솔라리스 5.9에 : 복제 및이의 printf로 보낼 수 있습니다 다음 문자열을 자릅니다
> ./a.out
1 123456789
2 123456789
4 123456789
8 123456789
16 123456789
32 123456789
의 sprintf()를. 아니면 소스 문자열을 걱정하지 않는 경우 :
char * trunc(char *src, int len)
{
src[len]=0x0;
return src;
}
참조 : 국제 표준 © ISO/IEC ISO/IEC 9899 : TC2, WG14/N1124위원회 초안 - 2005년 5월 6일
내 대답에 대한 응답으로 이것을 의미한다고 가정 할 때, 나는'. '형식 지정자에서 :'% 8s'은 * 최소 * 너비를 8 자로 설정합니다; '% .8s'는 * 최대 * 너비를 8 자로 설정합니다 (형식 지정자의 _width_ 및 _precision_ 한정자입니다). 이 동작에 특정한 플랫폼은 없습니다. C 언어 (C 표준 라이브러리가 포함되어 있으므로 C++의 사양)의 일부입니다. –
당신은 정확합니다 - 나는 그리워했다. –
%의 C 것이다 한 문자 만 인쇄하십시오. 이미 출력을 제한했다고 말하고 싶습니다. – abelenky