• ベストアンサー

ファイルから読み取った「行の長さ」は・・?

すみません。 while (fgets(buff, 256, pFile) != NULL) { ~~~ } として1行ずつファイルを読み込み、その中で1文字ずつ処理する為に 必要なforループのループ回数を得たいのですが・・ char buff[256]; // 先に確保した配列を、fgetsした後に int buff_length = sizeof(buff) /sizeof(buff[0]); // 長さを得ようとする こうすると確保したサイズ256が返ってきてしまい困っています。(当然かもですが・・ ファイルの1行の長さを毎回取得する方法は無いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

文字列町ならstrlenでは?

zaxs5968
質問者

お礼

ありがとうございます。 ブランクが有ったせいか、存在をすっぽり忘れてました・・ orz

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

char *p = strchr(buf, '\n'); if (p != NULL)  buff_length = p - buf; else  /* 行の途中で切れた */ といった感じでどうでしょうか? なお、上記では、行末の改行文字を長さに含んでいません。

zaxs5968
質問者

お礼

ありがとうございます。 処理の参考にさせて頂きます。

  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

使う関数は sizeof() じゃなくて strlen() ですよ また、改行コードも含まれますので、-1が必要と思います

zaxs5968
質問者

お礼

改行コードの存在・・すっかり忘れていました、 ありがとうございます。 orz

関連するQ&A

専門家に質問してみよう