- 締切済み
テキストファイルから一部を抽出する良い方法をご教授願えますか。
こんにちは。 C言語で、あるテキストファイルから一部分のみを抽出したいのですが上手くいきません。 テキストファイルの内容は Ip: 660066 total packets received 0 forwarded 0 incoming packets discarded 639683 incoming packets delivered 483408 requests sent out 180 outgoing packets dropped 上記のような形で、トータルの数字の部分(660066)のみを取得したいのですが上手くいきません。どなたかご教授願えますか。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
回答No.3
必ずこの形式だとして...(全角スペースは、半角スペースまたはタブだと解釈します) char s[6+1]; fscanf(stream, "Ip: %6s", s); でよいのでは?
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
「全体として何をしたいのか」にもよるけど, そもそも「C で書く」必要はあるんでしょうか?
- arain
- ベストアンサー率27% (292/1049)
回答No.1
まず >上記のような形で、トータルの数字の部分(660066)のみを取得したいのですが上手くいきません。 の「どのように」行ったのか、その結果についてわからなければどうしようもありせん。 上記内容で回答しようとすれば、「total packets received」の文字列の前の部分を取得してください。ということになります。 とりあえず、ソースを開示してください。 また、テキストの内容は必ずこの順番になりますか?
補足
お返事が遅くなってしまい申し訳ありません。 ソースは以下のとおりです。 #include<stdio.h> #include<stdlib.h> #include<string.h> main(){ char s[10]; FILE *fp; fp = popen("netstat -s |grep total","r"); if(fp = NULL){ printf("reading error"); exit(-2); } strncpy(s,fp,6); printf("%s\n",s); pclose(fp); } テキストの内容はコマンドなので必ずこの順番になります。2行目ですと「半角スペース4文字」660066「半角スペース」total・・・と続きます。 660066という数字のみを取り出して、これを演算に使いたいと考えています。なので文字列として取得する方法と、取得したこの数字をint型にする方法をご教授頂きたいと思っています。