*printf문에서 사용하는 포멧스트링중 %.2x 의 뜻이 무엇인가요

bejoy4him의 이미지

*printf문에서 사용하는 포멧스트링중 %.2x 의 뜻이 무엇인가요?

2x앞에 "." 가 붙는데 소수점 이하 두자리까지 찍어란 말인가요?
소스 코드 상에서는 소수점 이하가 존재할 이유가 없는 코드라서요..

원본 소스가 이상한건가?

정태영의 이미지

%x 는.. hex code 로 출력하라는 옵션인걸로 기억하는데요 :)
오타가 아닐까 싶습니다..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

kicom95의 이미지

버클리 DB 를 사용하면

printf("%s%.*s : %.*s\n", msg,
(int)key->size, (char *)key->data,
(int)data->size, (char *)data->data);

이런 구문이 있습니다.

%.*s 에 대해서 인자가 두개지요 크기와 시작 주소....

이와 비슷한 것이 아닐까요 ?

저도 포맷 스트링에 대해서는 잘 몰라서 ^^

가자 해외로 ~ .. 돈 벌러.

Prentice의 이미지

man 3 printf

.은 precision 값이라고 합니다.

doldori의 이미지

저도 모르던 건데 찾아봤더니, 정수형에서 . 이후의 숫자는 실제로 출력될 글자의
최소 길이를 뜻한다는군요. 글자수가 더 적으면 0으로 채우고요. 그러니까
printf("%.2x", 1u) 하면 "01"이 출력된다는 뜻이지요.

ps. 입출력 서식은 너무 복잡해요. :?

bejoy4him의 이미지

doldori wrote:
저도 모르던 건데 찾아봤더니, 정수형에서 . 이후의 숫자는 실제로 출력될 글자의
최소 길이를 뜻한다는군요. 글자수가 더 적으면 0으로 채우고요. 그러니까
printf("%.2x", 1u) 하면 "01"이 출력된다는 뜻이지요.

ps. 입출력 서식은 너무 복잡해요. :?

"01" 이런식으로 출력이 된다.. 흠..
처음에 이문제를 질문으로 올리게 된 이유가 원본이 된 소스에서 실제로 "01"과 같은 식으로 사용할려고 "%.2x"형식을 사용하였더라구요.... 그래서 그 소스를 긁어다가 다른 컴파일러를 사용하는 곳에다 붙여놓고 사용하였는데... 그냥 "1"이런 식으로 나오는것이었습니다.

앞에 부족한 자리수만큼 "0"을 채우는 것은 "%02x" 이런식이었다 라고 생각하고 그렇게 고쳐서 문제를 해결하긴 했는데...
"%.2x"라는 것은 정말 처음 봤거든요....

컴파일러의 종류를 말씀드리면 좋겠지만.. 정확한 것을 몰라서요..
gcc는 아니었고 어디에서 비싼 라이센스 주고 임베디드 용으로 사온것이었습니다.

어쨌던 그게 자릿수만큼 0을 채우는 것이 맞다니.. 신기하네요...

아참.. 추가적으로 그 내용은 어디서 찾으셨는지 혹시 기억하시면 좀 답글을 달아주시면 좋을텐데.. 어디인지 기억하지 못하실려나?? ^^

새해인데.. 올 한해 동안 좋은 일만 있길 바랍니다...

doldori의 이미지

bejoy4him wrote:
아참.. 추가적으로 그 내용은 어디서 찾으셨는지 혹시 기억하시면 좀 답글을 달아주시면 좋을텐데.. 어디인지 기억하지 못하실려나?? ^^

저는 표준문서를 참고했습니다만 TCPL이나 웬만한 man 페이지에도 나올 것 같습니다.
Quote:

o,u,x,X : [...] The precision specifies the minimum number of digits to appear;
if the value being converted can be represented in fewer digits, it is expanded
with leading zeros. The default precision is 1. The result of converting a
zero value with a precision of zero is no characters.
bejoy4him의 이미지

RTFM하지 않고 도움 주신 분들께 모두 감사합니다.

표준문서 읽는것에 익숙해 져야하는데...
에궁 에궁...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.