'전체 글'에 해당되는 글 895건

  1. 2008.11.29 Sprintf part1

2008. 11. 29. 09:41 devel

Sprintf part1




설명

메모리 영역으로 서식에 맞추어 출력합니다. 아래의 서식 변환 문자열을 참고하십시오.

변환 문자열 의미
%o 8진 정수 형식으로 출력
%d 10진 정수 형식으로 출력
%ld long형 10진 정수 형식으로 출력
%x 16진 정수 형식으로 출력
%u 부호 없는 10진 정수 형식으로 출력
%f 소수점 형식으로 출력
%e %E 지수 형식으로 출력
%g %G %e와 %f 중 짧은 쪽, 소수점에 이어지는 0은 생략
%c 문자 형식으로 출력
%s 문자열 형식으로 출력

참고로 서실 문자열에 옵션을 추가하여 좀더 다양하게 출력할 수 있습니다. 아래의 예를 참고하여 주십시오.

변환 문자열 출력 의미
printf("%d", 123) 123 표준 출력장치로 출력
printf("%5d", 123) ___123 10진수를 5자리에 맞추어 출력, 123앞에 공백 2개 추가
printf("%-5d", 123) 123__ 10진수를 5자리에 맞추어 출력, 왼쪽 맞춤, 오른쪽에 공백 추가
printf("%f", 1.234567) 1.234567 16진 정수 형식으로 출력
printf("%4f", 1.234567) 1.2346 소쉄 이하 4자리 출력, 반올림
printf("%7.2f", 1.234567) ___1.23 소숫점 포함해서 전체 7자리, 소수점 이하 2자리. 공백 3개가 앞 부분에 추가됩니다.
printf("%s", "forum.falinux.com") forum.falinux.com 지수 형식으로 출력
printf("%20s", "forum.falinux.com") __________forum.falinux.com 자릿수를 맞추기 위해 왼쪽에 공백을 넣어 문자열 출력
printf("%10s", "forum.falinux.com") forum.falinux.com 문자열이 더 길면 그대로 출력
printf("%.10s", "forum.falinux.com") forum.fali 문자열이 더 길면 잘라서 출력
printf("%-20s", "forum.falinux.com") forum.falinux.com________ 문자열을 왼쪽 맟춤으로 하여 오른쪽에 모자르는 자리를 공백으로 메꿈
printf("%12.10s", "forum.falinux.com") __forum.fali 전체 12자리로 10자리만 출력, 모자른 부분은 왼쪽에 공백 추가하여 출력
헤더 stdio.h
형태 int sprintf (const char s, const char * format, ... );
char *s
char *format 서식 문자열

인수


반환

char *s 서식에 맞추어 저장할 메모리 영역의 포인터 
 char *format 서식 문자열 

int  출력된 문자 수를 반환하며 오류가 발생하면 음수를 반환 
 
예제
#include <stdio.h>

int main( void)
{
   char  ptr[1024];
   int   ret;

   ret   = sprintf( ptr, "%d %x %s", 123, 123, "forum.falinux.com");
   printf( "ret=%d ptr=%sn", ret, ptr);

   return 0;
}
]$ ./a.out
ret=24 ptr=123 7b forum.falinux.com
참고


char temp[16] = {0};

sprintf(temp, "TEST : %.*s", 5, "1234567890"); //5 때문에 5글자를 넣는듯 싶음(공간이 남아있음)
printf("%.*s\n
%s\n", strlen(temp), "12345678901234567890", temp);
printf(temp);
결과

123456789012
TEST : 12345 // %.*s 로 자릿수 지정한만큼 출력 strlen(temp),      %s 스트링

TEST : 12345 //이건 당연한거고


asterisk * 를 사용하면 정밀도 조종이 가능함
*s,10 이런식으로 쓰던데 우측정렬기능이 있는듯함


결론 .*s 쓰면 원하는 만큼 문자열에서 빼다 쓸 수 있음
근데 문자열보다 긴 길이일경우 정렬이 깨짐


http://neodreamer.tistory.com/101
참고 여러 옵션 비교

'devel' 카테고리의 다른 글

4bytes data type pointer에서 1byte 씩 접근하기  (0) 2012.06.02
gcc 개인적인 정리  (0) 2012.04.23
Posted by 쵸코케키

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함