문제

에서 일하고 있어요 데리고 몇 가지 오래된 코드에서 1998 년까지 21 세기입니다.하나의 첫 번째 단계는 프로세스에서는 변환 printf 문을 들로 구성되 변수입니다.아무리 많은 시간을 다시 봐 printf 지만,나는 항상 끝까지 잊고 한다.그래서 재미를 위해 보자,디코딩,그것을 함께 위해 ole'시간 술과 과정에서 첫 번째 작은 만들기 'printf 프라이머' 에 대한 유래.

코드에서,이 작은 보석,

printf("%4u\t%016.1f\t%04X\t%02X\t%1c\t%1c\t%4s", a, b, c, d, e, f, g);

어떤 변수 a,b,c,d,e,f,g 포맷하시겠습니까?

도움이 되었습니까?

해결책

대부분 오른쪽.

니다.unsigned decimal,최소 4 자,공간 패딩
b.부동 소수점,최소한 16 자리하기 전에 진수(0 패딩),1 자 소수
c.진수 4 문자,0 덧대진,문자는 인쇄에서 상단 케이스
d.위와 같지만,최소 2 자
e.e 로 간주됩 int,로 변환 unsigned char 및 인쇄
f.과 같 e
g.이것은 가능성이 오타 4 효과가 없습니다.었다면"%.4s",그 다음의 최대 4 자에게서 문자열에는 인쇄할 수 있습니다.그것은 흥미로운 주는 이 경우에는 문자열이 필요하지 않은 null 이 될 종료됩니다.

편집: jj33 포인트 2 에 오류 b,g 위 .

다른 팁

@제이슨 일, 에,나는 생각에서 4 마지막%4s 상당한 보다 적은 경우는 4 문자입니다.이 있는 경우보다 더 많은 4 권,%4s%s 것 같지만,보다 적은 4 자 g%s 것을 왼쪽 정렬하고%4s 것에서 오른쪽 정렬 4char 필드입니다.

b 실제로 최소한 16 문자에 대한 전체적인 분야,포함하여 소수점 한 자리한 후에 소수 나는 생각한(총 16 자 대한 총 18 개 chars)

여기에 내 printf 프라이머:http://www.pixelbeat.org/programming/gcc/format_specs.html

나는 항상 컴파일된 벽으로는 gcc 이에 대한 경고 어떤 간의 불일치 공급 printf 형식과 변수입니다.

@jj33,당신은 절대적으로 오른쪽 모두에서 계산합니다.

#include <stdio.h>

int main(int argc, char *argv[]) {
    char *s = "Hello, World";
    char *s2 = "he";

    printf("4s: '%4s'\n", s);
    printf(".4s: '%.4s'\n", s);
    printf("4s2: '%4s'\n", s2);
    printf(".4s2: '%.4s'\n", s2);

    return 0;
}

$ gcc -o foo foo.c
$ ./foo
4s: 'Hello, World'
.4s: 'Hell'
4s2: '  he'
.4s2: 'he'

좋은 캐치!

니다.수,네 개의 중요한 숫자

b.지

c.hex 최소 4 자

d.또한 육,최소 2 자

e.1 문자

f.문자열,최소한 4

당신이 정말로 필요한 도구이 소요되는 형식 문자열에 printf()문을 변환로에 해당들로 구성되 기반 함수 호출합니다.
사람을 보내고 싶은 그의 자유 소프트웨어 기부시 개발에 이러한 도구입니까?

의 자리 표시자 URL 을 무료 소프트웨어 호스팅 서비스를 들고의 소스 코드 등의 도구

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top