![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ファイルの中の行数をカウントするにはどうすればよいか
プログラムの行数ならその行数分だけ
またコメントや空白行もカウントするにはどうしたらよいか
以下のプログラムに追加したい場合どうしたらよいか教えてください。
#include <stdio.h>
int main(int argc , char *argv[]){
char s[256];
int i;
FILE *fin;
int local;
int nCount = 0;
for(i = 1 ; i < argc ; i++){
printf("%s\n",argv[i]);
local = 0;
fin=fopen(argv[i],"r");
memset(s,0,sizeof s);
while(fgets(s,sizeof s,fin) != NULL){
//printf("%s",s);
local++;
nCount++;
}
memset(s,0,sizeof s);
while(fgets)
printf("local count = %d\n",local);
fclose(fin);
}
printf("grobal count = %d\n",nCount);
return 0;
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
だいたいあってるようですが…。
[単純な行数カウントについて]
・fopen()でエラーが起こった時の対応が無い
・fgets()は'\0'を付加するためmemset()は不要
・fgets()が“1行を読みこむ”ことを期待してはいけない
fgets()は「第3引数で示した文字数-1」を超える文字数の行については分割して読みこまれるため、行は'\n'の有無で判断するべき('\n'無しでEOFの時は当然1行)
・2つ目のmemset()とwhile(fgets)は意味不明(というかwhile(fgets)は終了しないのでは?)
[空行、コメント行について]
仕様が不備で答えられません
・空白行とは何をさすか('\n'のみの行で良いか)
・コメント行とは何を指すか(C/C++のコメントで良いか)
・非コメントとコメントが1行にある場合はどちらにカウントするか(a++ ;/* インクリメント */などの場合)
・文字列定数中に改行が含まれる場合は行と認識するか
"a
b
c"
この場合、空行と改行が含まれる
仕様としてはこの程度は明確になっていないとプログラムは作れません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
C言語で複数列のデータを1列の...
-
終了条件Ctrl+zについて,結果表...
-
データから必要な部分だけ出力...
-
printf による16進表示について
-
矢印キーを押下してコンソール...
-
C言語のプログラムで、途中で止...
-
構造体メンバの初期化
-
なぜ無限ループになるかが分か...
-
ファイルを辞書順に並べ替える...
-
【C言語】全角文字の配列を、全...
-
fwrite処理について
-
char型2つを結合し、short型に...
-
プログラミングの授業の課題です
-
#defineが使用するメモリ領域に...
-
リストの作成と出力(C言語)
-
VC++でSQLへSELECT文を送ったの...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
#defineが使用するメモリ領域に...
-
C言語のプログラムで、途中で止...
-
printf による16進表示について
-
空白を含んだ文字列がうまく格...
-
プログラミングの授業の課題です
-
【C言語】全角文字の配列を、全...
-
構造体メンバの初期化
-
Cでファイルの行数をカウントす...
-
char型2つを結合し、short型に...
-
矢印キーを押下してコンソール...
-
C言語で複数列のデータを1列の...
-
終了条件Ctrl+zについて,結果表...
-
Ç言語でファイルサイズを変更す...
-
エラーについて質問です。
-
C言語でのCSVファイルの読み出...
-
C++で指定文字列のカウント方法...
-
VC++でSQLへSELECT文を送ったの...
-
fscanfの使い方
-
c言語で文書を読み込み、単語の...
おすすめ情報