scanf 버그 인가요?

shodhpfooqmm의 이미지

"string 123123 123123 . . . 0.5"

이와 같은 라인(공백은 탭)을 1, 6번째 데이터를 무시하고 fscanf로 읽고자 하여

fscanf(fp, "%*s %d %d %s %s %*[^\t] %lf",
&bank->data[i][j].str,
&bank->data[i][j].end,
data1,
data2,
&bank->data[i][j].value);

와 같이 하면 다른 값을 다 읽히는데 value값은 읽어지지 않고 값을 찍어보면 0.0000(초기 값)이 나옵니다..

구조체는 대략
struct data {
int str, end;
double value;
};
와 같은 형태이고, bank 구조체가 포인터로 data구조체를 가리키고 있습니다.

참고로 fscanf에서 &bank->data[i][j].value 값 대신에 다음과 같이 double로 선언한 지역변수 value을 넣으면 값(0.5)이 읽어집니다ㅠ
fscanf(fp, "%*s %d %d %s %s %*[^\t] %lf",
&bank->data[i][j].str,
&bank->data[i][j].end,
data1,
data2,
&value);

현재는 value로 값을 읽고 그 값을 bank->data[i][j].value에 복사하는 방법을 사용하고 있는데
삽질을 아무리 해도 도무지 이해가 가질 않습니다.

어떤 잠재적인 문제가 있을 수 있을까요?
혹은 버그일까요?ㅜ 너무 답답하네요

시스템은 64비트 센토스, 리눅스 2.6.32, gcc 4.4.6 입니다.

익명 사용자의 이미지


scanf의 버그이거나, 컴파일러의 버그일가능성은 0라고 생각하셔도 됩니다.

말씀하신대로 아래것은 되는데, 위의 것은 안된다면
여기에 말씀하지 않으신 다른 어떤 곳에 버그가 있습니다.
data의 2차원 배열과 관련된 메모리 에러로 추정됩니다.

에러를 재현하는 최소한의 코드를 만드셔서 올려보시죠..

라스코니의 이미지

str, end 뒤에 값을 얻어오도록 해보시죠?
위에서처럼 data1, data2 뒤가 아니라요..

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.