- ベストアンサー
C言語でタグの抽出について
main関数で定義した文字列 "<pro><name>chad smith</name><id>1234</id><live>America</live></pro>" があり第一パラメータで検索したいタグを入力すると その中身を表示するプログラムを作成したいと思います。 >>プログラム名 id 1234 >>プログラム名 name chad smith >>プログラム名 pro <name>chad smith</name><id>1234</id><live>America</live> のようになります。 自分なりに作成したのが以下の通りです。 #include<stdio.h> #include<string.h> #define BUF 256 int main(int argc ,char *argv[]) { char str1[]="<pro><name>chad smith</name><id>1234</id><live>America</live></pro>"; char *p1, *p2; int length; if(argc != 2) { fprintf(stderr,"\nUsage :プログラム名 検索したいタグ名\n"); return 1; } p1 = strstr(str1, argv[1]); if(p1==NULL) { fprintf(stderr,"\n検索したタグは見つかりませんでした。\n"); return 1; } length =strlen(argv[1]); p2 = strstr(p1 + length, argv[1]); fprintf(stdout,"\n%.*s\n", (p2-2) - (p1+length+1), p1+length+1); return 0; } 一応自分の期待通りに実行されますが あまり自分の中では良いプログラミングではないような気がします。 後半の部分の(p2-2) - (p1+length+1), p1+length+1あたりがわかりづらいと思います。 もっと良い方法がありましたらよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
お礼
sprintfを用いて簡潔にまとめられるのですね。 そのことにより出力する際に指定もスッキリしていますね。 これで私の不満点が解決しました。 ありがとうございました。