できました。皆さんありがとございます。
次にdata_tel.txtにdata_tmpをコピーしてこのdelete()
関数を完成したいと思います。また
ご教授ください。よろしくお願いいたします。
data_tel.txt
sachiko ,090-0809
naka ,090-7777
kiyoko ,090-9999
satou ,090-3214
kinosita ,090-8769
yamada ,090-4325
itou ,080-6354
sudou ,090-3333
kitou ,080-13424
コード // data_kirikae8.c #include <stdio.h> #include <string.h> #include <stdlib.h> //for exit #include <sys\stat.h> #define Max 100 char dtfile[]="data_tel.txt"; char dtfile2[]="data_tmp.txt"; int main(void) { FILE *fp1,*fp2 ; char line[Max]={0}; // 検索対象文字列を読み込む配列 char line2[Max]={0}; char buff[256]; //検索文字列 int count=0; char *ptr; if(!(fp1 = fopen(dtfile, "r"))){ printf("ファイルを開くことができません\n"); return -1; } if ((fp2 = fopen(dtfile2, "r+")) == NULL) { fprintf(stderr, "ファイルのオープンに失敗しました.\n"); return -1; } printf("削除する名前を検索します。検索する名前を入力して下さい。\n"); scanf("%s",buff); //linesから1行ずつ取り出す。 while(fgets(line, 256, fp1) != NULL){ printf( "line=%s" ,line ); ptr=strstr(line,buff); if(ptr){ continue; }else{ // 書き込み fputs(line,fp2); count++; if ( count < 0 ) { count=fprintf(stderr, "ファイルの書込みに失敗しました.\n"); return -1; } } fclose(fp2); } fp2 = fopen(dtfile2, "r"); printf("\n\n"); while(fgets(line2, 256, fp2) != NULL){ printf( "line2=%s",line2); } // ファイルクローズ fclose(fp2); fclose(fp1); } /*【実行結果例】 naka@naka ~/kadai/kadai9-8 $ gcc -o data_kakikae8 data_kakikae8.c -Wall naka@naka ~/kadai/kadai9-8 $ data_kakikae8 削除する名前を検索します。検索する名前を入力して下さい。 naka line=sachiko ,090-0809 line=naka ,090-7777 line=kiyoko ,090-9999 line=satou ,090-3214 line=kinosita ,090-8769 line=yamada ,090-4325 line=itou ,080-6354 line=sudou ,090-3333 line=kitou ,080-1342 line2=sachiko ,090-0809 line2=kiyoko ,090-9999 line2=satou ,090-3214 line2=kinosita ,090-8769 line2=yamada ,090-4325 line2=itou ,080-6354 line2=sudou ,090-3333 line2=kitou ,080-1342 naka@naka ~/kadai/kadai9-8 $ naka@naka ~/kadai/kadai9-8 $
回答3件
あなたの回答
tips
プレビュー