C에서 파일을 읽어서 column 갯수를 알고 싶습니다.

aeronova의 이미지

안녕하세요,
제가 읽어야 할 파일이 보통 다음과 같은 구조로 되어 있습니다.

2.345        0.8    0.97862
....

동적으로 배열 크기를 잡기 위해 column 갯수를 알고 싶습니다..
숫자와 숫자의 구분은 white space(tab, space,..)로 되어 있구요.
음... white space를 separator로 잡아서 처리하면 될 듯 한데, 막상 해보니 잘 안됩니다.ㅜㅜ
조언 부탁드립니다.

winner의 이미지

한 줄 읽고 거기서 분리하심이.

처리를 했는데 잘 안 되신다고 하시니 좀더 정확히 사정을 말씀하셔야
답변이 가능하겠네요.

source 를 올리셔도 좋고요.

aeronova의 이미지

white space를 기준으로 substring으로 잘라서 count하면 되겠는데, C 실력이 짧아서요. 일단 제가 나름대로 생각한 것은 다음과 같은 방식입니다. 이걸 좀 더 깔끔하게 처리할 수 없을까요?

    int i=1;
    strtok(line," ");
    while (strtok(NULL," ")) i++;

It's better to burn out than to fade away. -- Kurt Cobain.

myPassion의 이미지

정규식을 이용해 whitespace를 split으로 간단하게 잘라낼 수 있을 것같습니다;

only php 유저라 C에 split과 같은 함수가 있는지는 잘 모르겠네요 :)

--------------------------------
http://www.elegantcoder.com

myPassion의 이미지

정규식을 이용해 whitespace를 split으로 간단하게 잘라낼 수 있을 것같습니다;

only php 유저라 C에 split과 같은 함수가 있는지는 잘 모르겠네요 :)

--------------------------------
http://www.elegantcoder.com

aeronova의 이미지

저도 python에선 split을 통해 쉽게 해결했지요.
좌우간 제 code의 문제점은 seperator가 공백인지 tab인지 구별이 안되는 단점이 있네요.
tab인지 공백인지 모두 싸잡아 처리할 방도가 없을까요?

It's better to burn out than to fade away. -- Kurt Cobain.

aeronova의 이미지

그냥 separator를 적어주면 되네요. strtok(line," \t\n"), 요렇게 하면 공백과 tab 등 모두 처리 가능합니다. :)

It's better to burn out than to fade away. -- Kurt Cobain.

익명사용자의 이미지

http://kldp.org/node/70973

이것과 같은 내용이라 보이는데요..
(다른 분이 올린 걸 모르고, 거의 카피된 것 같은 소스를 마지막에 올렸었단 걸 방금 보면서 알았네요..아, 창피..=_=)

댓글 달기

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