Line (옛날 한글에서 그리기 모드 같은 라인)의 아스키 값?

kjw7945의 이미지

예를 들면 다음과 같은 것을 그리려고 합니다.
(이쁘게 그리기 위한 방법이랄까요? ^^)

┌─────────┬─────────┬────────┐

이것을 printf로 값을 넣어서 찍으려고 합니다. 그런데 아스키
값이 존재 하지 않습니다. 따라서 이런 라인을 그리려면
콘솔에서 어떻게 해야 할까요?

그래서 다음과 같은 코드로 아스키 값이 존재하지 않은걸
(존재 하지 않는다기보단..) 적어도 2바이트 값을 가진다는
걸 알 수 있었습니다.

include <stdio.h>

int main()
{
    char *a="┌";

    printf("%s\n", a);

    return 0;
}

어떤 해결 방법이 있을까요..?

( Ps. 현 상황으로는 값을 읽어서 찍어야 합니다.. 즉
printf("%c", value); 와 같은 형태로 찍을 수 있어야
합니다.. printf("┌────────"); 이런식의 접근은
안됩니다...)[/code]

kjw7945의 이미지

자문자답이네요..

int main()
{
    char *a="┌";
    char *d="─";

    printf("%s\n", a);
    printf("%s\n", d);

    return 0;
}

로 값을 알아 낸후

int main()
{
    unsigned long long c;

    c = 134513863;
    printf("%s\n", c);


    return 0;
}

로 해결했습니다...(왠지 껄끄러운 듯한 해결이 된듯...)

그러나 이상한건 unsigned int나 unsigned long은 되지 않고
unsigned long long만 제대로 된 결과값을 찍는다는....
이상하네요 분명 값은 32비트를 넘어가는 수가 아닌데....
(unsigned int 끝이 4294967295로 알고 있습니다만...)

lifthrasiir의 이미지

kjw7945 wrote:
int main()
{
    unsigned long long c;

    c = 134513863;
    printf("%s\n", c);


    return 0;
}

매우 위험한 코드입니다. 대부분의 경우 한 프로그램에서 선언된 문자열이 다른 프로그램에서 유효할 가능성은 매우 낮고, 위와 같은 방법으로 포인터를 사용할 경우 엉뚱한 곳을 참조할 수 있습니다.

2바이트 문자의 문자값을 알아 내려면 다음과 같이 해야 합니다.

int main()
{
    char *a="┌";
    char *d="─";

    printf("%d %d\n", a[0], a[1]);
    printf("%d %d\n", d[0], d[1]);

    return 0;
}

이렇게 해서 실행하면 ─는 "\xa6\xa1", ┌는 "\xa6\xa3"과 같다는 것을 알 수 있습니다. (물론 인코딩마다 다 다릅니다만 euc-kr 기준으로) 그러면 다음과 같이 실행하면 되겠죠.

int main() {
    printf("%c%c\n", 166, 161);
    return 0;
}

그런데 왜 %c만을 고집하나요? 그냥 다음과 같이 문자열로 써도 될 것 같은데요.

const char *a = "┌", *d = "─";

int main() {
    int i;
    printf("%s", a);
    for(i=0; i<10; i++) printf("%s", d);
    return 0;
}

- 토끼군

kjw7945의 이미지

답변 감사합니다.

그리고 제가 글을 잘못 썼군요....

%c만을 써야 하는게 아니라...

변수를 인자로 주어서 찍기만 하면 됩니다.

즉 %s로 찍으면 됩니다...

다시한번 답변 감사드립니다. ^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.