No.3ベストアンサー
- 回答日時:
>C言語でテキストファイルのトータル行数を取得する関数又はその方法を教えてほしいのですが。
3つ前の質問 http://okwave.jp/qa5129642.html 質問文中のソース冒頭 line2++; 部分(下に修正したもの掲載)で、
・テキストファイルの行数を、ファイルの頭から1行ずつ「読み捨て」て、それをファイル終端まで繰り返すことで数えています。
ここでは、「全体として、どの位メモリを確保したらいいか」という動機から、超みっともない?こと(読み捨て、1ファイルを2度オープン)をしています。
(本人には、http://okwave.jp/qa5114580.html の No.3 で指摘済み)
1行ずつ読み込みながら、1行分のメモリを追加確保していくのが普通だと思うのですが・・。
・エディタでファイルを開けば判ることを、わざわさプログラムにする理由はなく、(質問文には現れない)主目的との「兼ね合い」でご質問された、と思います。
・「何々したいから、プログラムの冒頭で、ファイルのトータル行数を取得しておきたい」の「何々」部分を明らかにすれば、「兼ね合い」を解消する技法について「回答」が得られるかもしれません。
もし、上の質問者様と同様な動機でしたら、少なくとも、「エディタでファイルを開き、行数を確認」し、プログラム実行時にコマンドラインで、argv[ 2 ] に行数が入るようにして下さい。
超みっともない「読み捨て、1ファイルを2度オープン」は不要となります。
プログラムでは、line2 = atoi( argv[ 2 ] ); とすることで、行数を得ることができます(ファイル名は、argv[ 1 ] で)
----------------------------------------------
直球回答
int line2 = 0;
char buf[ 1024 ]; // 最大レコード長より大きいこと
FILE *fp;
if( NULL == ( fp = fopen( argv[ 1 ], "r" ) ) ){
printf( "%s が開けません\n", argv[ 1 ] );
return( -1 );
}
while( NULL != fgets( buf, 1024, fp ) ){
line2++;
}
fclose( fp );
No.2
- 回答日時:
UNIX環境であれば、
wcコマンドをパイプを使って取得するとか。
※環境は必ず明記すべき。
それ以外の方法は便利な関数があるわけではないので
ファイルを開いて自分で数えるのみ。
No.1
- 回答日時:
右端での自動折り返しを考慮しないものとして、テキストファイル中の改行コードの数を数えれば良いのでは。
行数の変数を0に設定。
以下、ファイルの最初から最後まで繰り返し。
1文字読み込み。
改行コードだった場合は、行数の変数に1を加算。
とか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- PHP PHPでテキストファイルに保存した時の改行問題 1 2022/11/19 15:07
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) エクセル マクロ テキストファイルを取り込む 複数の区切り文字で別々のセルに格納するには? 3 2022/08/10 21:10
- その他(プログラミング・Web制作) 複数のテキストファイルの結合方法 2 2022/05/14 23:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
C言語のポインターに関する警告
C言語・C++・C#
-
Cでファイルの行数をカウントするには
C言語・C++・C#
-
-
4
エディットボックスのフォントを変えたい
C言語・C++・C#
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
7
#define _CRT_SECURE_NO_WARNINGS について
C言語・C++・C#
-
8
C言語---ファイルに出力したデータをすべて消去する方法
C言語・C++・C#
-
9
char*を初期化したいのですが
C言語・C++・C#
-
10
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
11
charからLPTSTRへの変換方法
C言語・C++・C#
-
12
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
13
エディットボックスの入力制限について
C言語・C++・C#
-
14
c言語で任意のファイルから読み込んだ単語の数をカウントする
C言語・C++・C#
-
15
strcmp
C言語・C++・C#
-
16
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
17
Cの関数で自分自身のパス取得
C言語・C++・C#
-
18
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
19
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
20
VC++でコントロールの境界線を描画する方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスカウンターが更新され...
-
VS2010 MFC CStdioFileについて
-
改行までの一文字ずつのファイ...
-
ファイル内のデータを1行削除...
-
C言語初心者の質問失礼します。
-
どんなプログラムを書いても指...
-
C言語とシリアル通信の送受信...
-
VBAでMP3を鳴らしたい
-
バッファとは何ですか
-
VBS形式ファイル:ダブルクリッ...
-
fopenで別ディレクトリにファイ...
-
マイクラでPythonのプログラミ...
-
Java 3D Web Start のソースコ...
-
ファイルアイコンの左下に緑の□...
-
サーブレットをapacheで公開す...
-
絶対パスの絶対て英語で何でし...
-
Maximaでダブルクリックでwxmフ...
-
エンディアンと2の補数表現
-
webアプリケーションでの画像フ...
-
Microsoft VBAで2GBを超えるフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内のデータを1行削除...
-
テキストファイルの行数を取得...
-
バイナリファイルをテキストフ...
-
c言語 2つのファイルを行ご...
-
fgetsで2行目から文字化け
-
改行までの一文字ずつのファイ...
-
VBSで指定行に挿入
-
winsock recvでの文字化け
-
【VB.Net】バイト型配列に読み...
-
巨大なテキストファイル(可変...
-
C言語での改行コードの扱いにつ...
-
EOF判定されない
-
【C言語】テキスト読み込みの行...
-
続・EOF判定されない
-
freadでファイルを読み込んだ際...
-
fopenで開いたファイルのサイズ...
-
C言語 バイナリファイルの読み...
-
ファイル読み込みについて
-
0x00をファイル出力
-
0バイトファイルの作成
おすすめ情報