![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?8acaa2e)
こんにちは。
C言語で、テキストファイルの文章の一部を削除してすっきりした形で出力したいと考えています。具体的には、下のfile.txtの中身の、
22:26:37.617570 IP (tos 0x10, ttl 64, id 6677, offset 0, flags [DF], proto: TCP (6), length: 100) 10.1.4.12.ssh > 10.1.4.99.54812: P 1893099304:1893099352(48) ack 3531241764 win 1430 <nop,nop,timestamp 1598028307 370716255>
この長ったらしい上の一行を、
22:26:37.617570 IP 10.1.4.12.ssh > 10.1.4.99.54812: tcp 48
というシンプルな形式に変えて出力したいと考えています。
いらない部分の一つ目は「IP」から右の、
(tos 0x10, ttl 64, id 6677, offset 0, flags [DF], proto: TCP (6), length: 100)までと、
二つ目は「54812」から右の
: P 1893099304:1893099352(48) ack 3531241764 win 1430<nop,nop,timestamp 1598028 307 370716255>
までです。
良いやり方をご存知であればご教授頂けないでしょうか。どうぞよろしくお願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
C言語でやるなら、strtok()等の文字列処理系の関数でごりごりやるしかないと思います。
たとえば対象となる文章の中のカッコ()の数、Pの位置が毎回同じなのであれば、その特徴を元に抽出させるような方法しかないかと。
char str[] = "22:26:37.617570 IP (tos 0x10, ttl 64, id 6677, offset 0, flags [DF], proto: TCP (6), length: 100) 10.1.4.12.ssh > 10.1.4.99.54812: P 1893099304:1893099352(48) ack 3531241764 win 1430 <nop,nop,timestamp 1598028307 370716255>";
char *tok;
char buf[256]="";
// 前文を取得
tok = strtok(str, "(");
strcpy( buf, tok);
// 中文を取得
tok = strtok(NULL, ")");
tok = strtok(NULL, ")");
*(tok + 1) = '\0';
tok = strtok(NULL, "P");
strcat(buf, tok);
// 後文を取得
tok = strtok(NULL, "(");
tok = strtok(NULL, ")");
strcat(buf, "tcp ");
strcat(buf, tok);
printf("%s", buf);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps script スクレイピ...
-
アクセスしたユーザーの地域(...
-
登録済みイベントリスナーの情...
-
Excelで可視セルの行番号取得
-
Formatでmmが月と分を意味する理由
-
指定地点(緯度・経度)から指定...
-
EXCEL VBAで、EXCELの入力規則...
-
漢字読み取得方法
-
「<c:forEach タグが終了し...
-
フォーム上で押されたボタンに...
-
Javascriptのhistory.back()が...
-
腕時計の時報をならないように...
-
リクエストに応じたselectedの...
-
Java-jspの画面入力値保持について
-
漏電遮断器の黄色ボタンと白色...
-
フォームで同じ複数のnameで違...
-
jspからServletを呼び、元のjsp...
-
C言語で今まで表示していた画面...
-
jspでbeanを使いたいのです...
-
三菱GOTの画面切り替えについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ActiveWorkbook.Pathの一つ下の...
-
ActiveReportのDataSourceについて
-
VBAでTIFF画像を読み込むには?
-
登録済みイベントリスナーの情...
-
Excelで可視セルの行番号取得
-
EXCEL VBAで、EXCELの入力規則...
-
Formatでmmが月と分を意味する理由
-
java → jsp コンボボックス表示...
-
Spreadでの複数行選択
-
strutsで空白を認識させるには?
-
vbaで、オートシェイプ文字列、...
-
javascriptでローカルフォルダ...
-
GetWindowTextについて
-
指定地点(緯度・経度)から指定...
-
google apps script スクレイピ...
-
javascriptでIMEの状態を取得
-
WebBrowserに表示されているペ...
-
アクセスしたユーザーの地域(...
-
Goole Mapsのマイマップで出力...
-
Applet-Servlet間通信
おすすめ情報