다시 질문드립니다. 파싱관련.

pse5802의 이미지

for (i = 0; i < MName; i++)
{
szbuf[i] = fgetc(fp);
if (szbuf[i] == ',')
{
strtok(szbuf, seq);
break;
}
}
size = strlen(szbuf);
for (i = 5; i < size; i++)
{
sbuf[i] = szbuf[i];
}

일단 코드는 이런데.... 제가 하고 싶은건 파일에서 Name:이름 이부분에서
Name: 을 분리하고 이름을 다른 버퍼에 집어 넣고 싶습니다. 그런데... debug 를 해보면 왜... 문자를 읽지못하는지 이해가 안됩니다...
도와주십시오.

익명 사용자의 이미지

다버깅중에 어느 라인이 이해가 안되는지 말씀해보세요. 예를 들면 각각의 값이 얼마인데 찍어봤더니 이해할 수 없는 값이더라. 그런게 아니라면 스스로 ㅣ버깅하시는게 맞다고 생각합니다.

pse5802의 이미지

그후, 이제 해당 버퍼로부터 얻어온값 즉 Name:isaka 이부분을 indext 5 부터 isaka이부분을 옮겨오려고하는데
안되더군요. 아니 디버깅을 해보면. 아스키코드??라고해야하나... 정확히는 잘모르겠네요... 제가 생각한 것으로는 분명히 isaka 이걸 가지구와야하는데
수를 가지고 오는거 보니. 유니코드를 가지고오는거 같습니다.

pse5802의 이미지

정확히 말씀드리면. Name:김슬기라면.
김슬기의 data가 유니코드 형태로 저장이 되어보입니다. 그런데. 이 data를 print하려고하는데. 안되더군요.
왜그런겁니까.. 해결방법도 모르겠습니다.
도와주십시오.

shxodlf3의 이미지

0x80 이상 2개가 붙으면 한글이잖아요

일단 가져오는 부분부터 원하는대로 정확히 가져 오는지 보신뒤 차근차근 풀어보심이 좋을듯 해요

1년차 임베디드 소프트쟁이 입니다

시스템에 관심이 많습니다

익명 사용자의 이미지

Name:abc로 하면 잘 동작하나요?

pse5802의 이미지

네. 됩니다. 한글은 안됩니다... 왜그런 걸까요

익명 사용자의 이미지

어떻게 찍어주고 계신지 저 아래 부분 코드가 없어서 알 수는 없지만...
그 부분에서 sbuf[0], sbuf[1], ..., sbuf[i] 를 한 글자씩 찍어보세요.

pse5802의 이미지

buffer의 내용을 못찍습니다. 전부 NULL값으로 인식하는걸로 보입니다.

pse5802의 이미지

buffer의 내용을 못찍습니다. 전부 NULL값으로 인식하는걸로 보입니다.

raymundo의 이미지

못 찍는다는 건 무슨 말인지 모르겠는데,
printf("%s"...) 형태로 찍으려 하셨다면 당연히 안 나오니까 질문을 하셨겠죠.

윗분의 말씀은
%x 나 %d 를 써서 한바이트 한바이트씩 그 안에 들어있는 값을 찍어보라는 얘깁니다.
설령 NULL 이었다해도 그럼 0이라도 찍혀 나올테니까요.

좋은 하루 되세요!

racer79의 이미지

sbuf[i] = szbuf[i] 를 넣으시네요.
i가 5부터 시작이시구요...

sbuf[i-5] = szbuf[i]; 형태로 되어야 할 것처럼 보입니다.

익명 사용자의 이미지

유니코드 문자열은 C 표준 라이브러리의 문자열 함수를 사용해서 다룰 수 없습니다.
유니코드 라이브러리를 사용하셔야 합니다.
ICU (http://site.icu-project.org/) 같은 것이 많이 사용되는 녀석입니다.

jick의 이미지

일단 시스템에서 사용하는 인코딩이 뭔지 확인해야 될 것 같은데요? euc-kr이나 UTF8이라면 큰 문제 없이 C 문자열 함수를 사용할 수 있습니다. (물론 한글 한 글자가 한 바이트에 안 들어가니 자를때 조심해야 합니다만...)

#include <stdio.h>
int main()
{
  char *p;
  for (p = "가"; *p; p++) printf("%x\n", (unsigned char) (*p));
  return 0;
}

해보시고 결과를 알려주세요.

pse5802의 이미지

이런 방법도 있군요....
오...

익명 사용자의 이미지

솔직히, 저만 이 글타래 보면서 속터지는 건 아닐 거 같네요.

debug 를 해보면 왜... 문자를 읽지못하는지 이해가 안됩니다...

디버그를 뭘로 어떻게 했는데, 결과가 어떻게 나왔길래 "문자를 읽지 못한다"라고 했는지?

디버깅을 해보면. 아스키코드??라고해야하나... 정확히는 잘모르겠네요... 제가 생각한 것으로는 분명히 isaka 이걸 가지구와야하는데 수를 가지고 오는거 보니

그 수를 어떻게 확인했고, 도대체 그 수가 몇이었는지?

김슬기의 data가 유니코드 형태로 저장이 되어보입니다. 그런데. 이 data를 print하려고하는데. 안되더군요

print하는 코드가 정확히 어떻게 작성되어 있었는지?

이런 내용이 처음 질문글에 적혀 있었으면, 10일날 올라온 글이니까 11일쯤 뭔가 답이 나왔을 것 같습니다.

그러나 14일인 현재까지도 답은 커녕, 답을 내기 위해 필요한 저 의문점들을 답변하는 분들이 하나씩 묻고 있는 상황이네요.

당장 이번 댓글만 해도, "이런 방법도 있군요....오.."라고 쓰실 시간에 저 jick님 적은 코드를 응용해서 문제의 그 데이타를 출력해서 그 결과를 찍어주세요.

pse5802의 이미지

성의없는 댓글 죄송합니다.
방학이 아니라 하루종일 붙잡아두고 볼 수도 없는 노릇입니다.
하루 일과가 다끝나거나 공강시간이되면 해당 글을 보며, 댓글의 내용을 노트에 적어 놓습니다.
그래서 과제나 제출해야할 문서를 문서화 시키고 나면,다시 시도는 해봅니다만, 현재 과제 때문에 매달려서 솔직히 시간이 좀 그렇습니다.
주말에 다하고서나서야 다시 해보고요....
논란의 여지가 있으셨다면 죄송합니다.

익명 사용자의 이미지

ㅠㅠㅠㅠ제가 위에 너무 공격적으로 쓴 것 같아 그건 제가 죄송하고요.

성의가 아니라 효율 얘기 하고 싶은 거죠.

본인이 바빠서 질문 올리고 일주일 후에야 확인하고 이런 거야 충분히 있을 수 있는데,
그러면 더더욱 질문 답변 한두 턴 만에 정답 얻어서 해결하면 더 좋지 않을까요.

http://kldp.org/node/141737#comment-602243
이 코멘트가 딱 적용될 법한 상황이라고 생각합니다.

shxodlf3의 이미지

과제 때문에 개인의 시간이 곤란해서 이곳에 질문을 주신다니요

찾아볼만큼 찾아보고 문제 해결을 위해 노력하고 시간투자를 해도 도저히 안풀릴경우

다른사람에게 질문을 하는게 맞다고 생각합니다

주변에 잘하는사람 붙잡고 보여주면서 왜 안되는지 물어보시는게 제일 빠르게 해결되는 방법 아닌가요?

시간이 문제가 되면 여기에 물어보시는것도 말이 안되죠

남이 알려주는거 그대로 따라한다고 그게 아는게 되지는 않아요

어쨌든 한글도 2byte 공간을 사용해 저장합니다

출력할때 한글을 2byte로 묶어서 읽고 한글로 출력하지 않을경우 확장아스키 코드표 중 각각 1byte씩 나누어 출력하게 됩니다

출력하는 font에 확장아스키에 대한 문자가 지정되어 있지 않으면 당연히 출력이 되지 않습니다

그래서 hex값으로 0x00이 아닌 값이 들어가 있는지 확인을 해보란 말씀을 드린겁니다

1년차 임베디드 소프트쟁이 입니다

시스템에 관심이 많습니다

pse5802의 이미지

음... 저두 다른 사람에게 물어봤는데... 모르더라구요....
서로 2시간동안 고민하다가 따로 블로그나 사이트 이곳저곳 뒤져보고 디버깅하며 체크하고 했었는데. 안되서 올린겁니다...
저 모른다고 무턱대고 올리는 사람아니에요 ㅠㅠ
솔직히 다들 자바만 하지, C는 다들 관심도 없어요....
유일하게 한 구성원이라치면 두 명만 관심있고 죄다 자바만 하더군요....
성의 있는 답변들 주셨는데... 좀 제가 무책임한 기분이 드네요.... 선배님들 죄송합니다.

pse5802의 이미지

음 실행 해봤습니다. jick 이분 내용에 대해서는 좀 공부해야할 듯해요...
이해안가는 내용이 있긴 합니다만. 음 예를들어서
일단 파일에서 읽은 내용을 토큰으로 분리를 합니다.
그다음 이 분리한 buffer를 다른 버퍼에 복사를 합니다.
이때. 복사는 됩니다. 허나 출력시, 아무것도 안나옵니다.(한글일시)
그러나 영어는 정상적으로 작동을 하더군요. 아직 생각할 부분이 많은거 같습니다.
제가 index값을 넣는것이 잘못된건지, 아니면 버퍼를 거쳐 버퍼에 복사하는 부분이 잘못 된건지
확인을 해봐야 할듯합니다.
-----------------------------------------------------
그리고 이건 과제가아니에요... 혼자 하고 싶어서하는거라...
과제는 정말 혼자 힘으로 해결하려고 노력을 하긴 합니다.
C도 굉장히 늦게 배웟어요. Java같은 경우는 기본적인 이론만 잡아놓고,흥미가 없더라구요.
c가 재미있어서 계속 공부중이기는 합니다.
다들 제 태도에 대해 불만 있으셨다면... 정말 죄송합니다.

raymundo의 이미지

그러니까... 이미 위에서 여러 회원님들이 말씀하셨지만...

"아무것도 안나옵니다"라는 말만 가지고는 그 누구도 제대로 답을 드릴 수 없다는 얘기입니다.

프로그램을 실행하는 그 컴퓨터는 인터넷이 안 되나요? 어째서 코드를 보여달라는 저 말들은 하나도 못 들은 듯이...

좋은 하루 되세요!

댓글 달기

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