VS CODE(utf-8)에서, printf("%10s\n"); 과 같은 문자열 길이를 정하고 싶습니다.

익명 사용자의 이미지

//많은 부분이 생략되고 필요한 부분만 올렸습니다.
typedef struct Food_name {
    int key;
    char name[20];
    int price;
    int count;
} Food_name;
typedef struct User_Select_ {
    Food_name list[MAX_SELECT_COUNT];
    int list_present;
    int sum;
} User_Select_;
 
Food_name menu[MENU_ROW_SIZE][MENU_COLUMN_SIZE] = {
    {{10, "치즈버거세트", 3300, 0},
     {11, "더블버거세트", 4500, 0},
     {12, "치킨세트", 10000, 0}},
 
    {{20, "치즈버거", 1600, 0},
     {21, "더블버거", 2900, 0},
     {22, "햄버거", 1200, 0}},
 
    {{30, "아이스크림", 1200, 0},
     {31, "포테이토", 1800, 0},
     {32, "빙수", 2000, 0}},
 
    {{40, "콜라", 1000, 0},
     {41, "커피", 1100, 0},
     {42, "밀크쉐이크", 1500, 0}}};
int main(void) {
    int col = 0;
    while(col<4){
        printf("%-2d%-20s%6d  %-2d%-20s%6d\n", menu[0][col].key, menu[0][col].name,menu[0][col].price,
                   menu[1][col].key, menu[1][col].name, menu[1][col].price);
        col++;
     }
     return 0;
}

VS CODE 사용. C/C++ extention 사용, C, 작성문서 UTF-8, Powercell 과 cmd 모두 사용함

vs code에서 powercell이나 cmd에서 출력시 다음과 같이 출력됩니다.

세트메뉴 버거메뉴
10치즈버거세트 3300 20치즈버거 1600
11더블버거세트 4500 21더블버거 2900
12치킨세트 10000 22햄버거 1200
디저트메뉴 음료메뉴
30아이스크림 1200 40콜라 1000
31포테이토 1800 41커피 1100
32빙수 2000 42밀크쉐이크 1500

같은 코드를 그대로 사용해서
DevC++에서 출력하면

세트메뉴 버거메뉴
10치즈버거세트 3300 20치즈버거 1600
11더블버거세트 4500 21더블버거 2900
12치킨세트 10000 22햄버거 1200
디저트메뉴 음료메뉴
30아이스크림 1200 40콜라 1000
31포테이토 1800 41커피 1100
32빙수 2000 42밀크쉐이크 1500

다음과 같이 출력이 됩니다. 바로위가 제가 기대했던 출력인데

dev c++에선 euc-kr을 사용하는 건지 한글 한 문자당 2바이트를 차지하고
vs code에서 utf-8에선 한글 한 문자당 3바이트를 차지하는 걸 확인했습니다.
그렇다면

제가 vs code utf-8상태에서 위와같은 코드를 출력할 순 없는걸까요? 왜 UTF-8상태에서 POWERCEL 출력시
printf("%10s\n", something); 과 같은 서식 지정이 어느땐 되고 어느땐 안되는걸까요?

영어로는 서식문자를 지정해 칸의 크기를 조절해서 출력하는게 문제없이 잘됩니다. 한글만 제가 이해할 수 없는 출력양상을 보여주는데 어떻게 해결할 수 있을까요?

고수님들의 도움이 절실합니다.

작성자의 이미지

vs 코드에선

세트메뉴 버거메뉴
10치즈버거세트 3300 20치즈버거 1600
11더블버거세 4500 21더블버거 2900
12치킨세트 10000 22햄버거 1200

디저트메뉴 음료메뉴
30아이스크림 1200 40콜라 1000
31포테이토 1800 41커피 1100
32빙수 2000 42밀크쉐이크 1500

같은 코드를 그대로 사용해서
DevC++에서 출력하면

세트메뉴 버거메뉴
10치즈버거세트 3300 20치즈버거 1600
11더블버거세트 4500 21더블버거 2900
12치킨세트 10000 22햄버거 1200

디저트메뉴 음료메뉴
30아이스크림 1200 40콜라 1000
31포테이토 1800 41커피 1100
32빙수 2000 42밀크쉐이크 1500

이고 제가 기대하는 출력입니다.
질문의 요지는
"한글 출력을 vscode,utf-8상태에서 다음과 같이 할 수 있을까요?"
입니다

작성자의 이미지

띄어쓰기가 모두 한칸으로 인식되서 결과출력을 쓰질못하네요.. 여튼 출력이 다르게됩니다. 사진으로 올리고 싶은데 방법을 모르겠네요

익명 사용자의 이미지

혹시 댓글 입력란에 뭐라고 써 있는가 안 보이시나요? 코드를 제대로 태그로 둘러싸시면 문제가 없습니다.

raymundo의 이미지

꼭 코드만 code 태그에 쓰라는 법은 없으니 저런 출력결과도 code 태그 안에 적으시면 띄어쓰기가 제대로 반영될 겁니다.

어쨌거나 한글이 포함되어 printf 의 정렬이 제대로 안 되는 문제는
http://sunjin220.blog.me/220245044486
요런 걸 참고해보시면 될 것 같은데요.

좋은 하루 되세요!

작성자의 이미지

다음에 올릴떈 더 잘올리도록 해봐야겠네요
답변 감사합니다!

익명 사용자의 이미지

그러한 함수를 만들어주셔야 할 겁니다. 유니코드 문자 개수를 세는 함수도 필요할 거고요

댓글 달기

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