ネット上で見つけたコードに変更を加えて実行するとコアダンプになるので、原因を教えてください。
プログラムはファイル内の文字列の変更です。
コードは以下になります。
#include <stdio.h> #include <string.h> int main(void) { FILE *fp,*fo; int a; char *search = "FLG=0"; //←検索前の文字列 char *string = "FLG=1"; //←置換後の文字列 char *buff,*seek,*find; char one[256]; fp = fopen("test.txt","r"); fo = fopen("test1.txt","w"); while ( fgets(buff,sizeof(buff),fp) != NULL ){ for ( seek = buff ; (find = strstr(seek,search)) != NULL ; seek = find ){ a=(find-seek); fprintf( fo, "%.*s",a ,seek ); fputs( string, fo ); find += strlen( search ); } if ( find == NULL ){ fputs( seek, fo ); } } fclose(fp); fclose(fo); return 0; }
これを実行すると、「 Segmentation fault (コアダンプ) 」
と表示されて実行できません。
10行目の
char one[256];
を
static char one[256];
とすると実行できます。
どうして失敗したり成功したりするのか教えてください。
パソコンは ubuntu コンパイラは gccです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/23 07:28