###前提・実現したいこと
C言語に関して、strstr関数を用いてテキストファイルの内容を特定文字列(各行の最後にあるとします)を除いて標準出力したいと考えています。
例:sample.txt
HOSTNAME = HOST ipaddres = 192.168.0.2 subnet mask = 255.255.255.0 default gateway = 192.168.0.1 DNS = 8.8.8.8
から192.168.0.2を非表示にして
HOSTNAME = HOST ipaddres = subnet mask = 255.255.255.0 default gateway = 192.168.0.1 DNS = 8.8.8.8
の様に出力させたいということです。
###ソースコード
C
1#include<stdio.h> 2#include <string.h> 3int main(){ 4 FILE *fp; 5 char *p; 6 char a[10000]; 7 p = a; 8 if ((fp = fopen("sample.txt", "r"))==NULL) { 9 fprintf(stderr,"ファイルを開くのに失敗しました\n"); 10 exit(1); 11 } 12 while(fgets(p,10000,fp)!= NULL){ 13 if(NULL != strstr(p,"192.168.0.2")){ 14 p = strstr(p,"192.168.0.2"); 15 *p = '\n'; 16 *p++; 17 } 18 } 19 fprintf(stdout,"%s\n",a); 20 fclose(fp); 21 return 0; 22}
1行ずつ読み込み、それを配列に保存
その行に消したい文字列があればその先頭を改行して、配列の次の要素からファイル内容を読み込むようにする
をループして、全て読み込んだら配列を出力する。
という動作をするようにコーディングしてみました。
###実行結果
ipaddres = DNS = 8.8.8.8
となり、最終行と該当文字列がある行しか表示されません。
どのように改変すれば欲しい結果が得られるでしょうか。
アドバイスよろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。