質問: 0) /*後ろから3文字目以降が.exになっているかをチェック*/{ strcpy(string + strlen(string) - 3, ".dx");/*後ろから3文字目以降を.dxに置き換える*/ } else strcat(string,".dx");/*末尾3文字が.ex出ない場合はそのまま.dxを付け足す*/ printf("-> %s\n", string); free(string); } return 0; } ``` コマンドライン引数を a abc abc.ex abc.ex.ex abc.dx とすると得たい結果は a -> a.dx abc-> abc.dx abc.ex.ex->abc.ex.dx abc.dx->abc.dx.dx なのですが、a->a.dxの時点でエラーになって強制終了してしまいます。 詳しい方指摘の方よろしくお願いします。
回答: ちょと見ですが・・・ string = malloc(100 * sizeof(char)); string = argv[i]; <-この段階でmalloc()ポインタが上書きされる。 strcpy(string,argv[i]);あたりがいいかと・・・ free(string);