
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も見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
c言語で任意のファイルから読み込んだ単語の数をカウントする
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
-
4
C言語でCSVファイルの行数を読み取りたい
C言語・C++・C#
-
5
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
6
charからLPTSTRへの変換方法
C言語・C++・C#
-
7
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
8
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
9
Cでファイルの行数をカウントするには
C言語・C++・C#
-
10
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
11
int型の内容をbyteの配列にコピー
Java
-
12
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
13
C言語 配列の長さの上限
C言語・C++・C#
-
14
C言語のポインターに関する警告
C言語・C++・C#
-
15
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
16
C++でのCRLFについて
C言語・C++・C#
-
17
CString から LPCTSTRの型に変換
C言語・C++・C#
-
18
EOF
C言語・C++・C#
-
19
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
20
MFCダイアログボックスを最前面に表示
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル内のデータを1行削除...
-
改行までの一文字ずつのファイ...
-
C言語での改行コードの扱いにつ...
-
ファイルサイズ指定し、ファイ...
-
fopen(ファイルパス)
-
バイナリファイルをテキストフ...
-
複数テキストファイルを読み込...
-
fopen(書き込みモード)でファイ...
-
ハフマン符号のプログラム
-
テキストファイルを分割するプ...
-
C言語のファイル読み込みに関し...
-
EOF判定されない
-
DOSでメモ帳を開いても改行され...
-
winsock recvでの文字化け
-
ファイルポインタが動かない・・・
-
バッファとは何ですか
-
FTPでputすると空ファイルが出...
-
C言語初心者の質問失礼します。
-
Access クエリ実行が急に非常に...
-
絶対パスの絶対て英語で何でし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バイナリファイルをテキストフ...
-
EOF判定されない
-
ファイル内のデータを1行削除...
-
巨大なテキストファイル(可変...
-
テキストファイルの行数を取得...
-
fgetsで2行目から文字化け
-
改行までの一文字ずつのファイ...
-
ファイルサイズ指定し、ファイ...
-
c言語 2つのファイルを行ご...
-
0バイトファイルの作成
-
【VB.Net】バイト型配列に読み...
-
fprintfで出力するファイルのパ...
-
VBSで指定行に挿入
-
VS2010 MFC CStdioFileについて
-
複数テキストファイルを読み込...
-
ハフマン符号のプログラム
-
winsock recvでの文字化け
-
freadとfwrite
-
ファイル読み込みについて
-
テキストファイルの文字列の削除
おすすめ情報