Code Reviewで以前にいくつかの推奨事項を実装しました。また、ポインターを使用してコードを改善しました。しかし、以下のアドレスインクリメントの部分はどこが悪いのsqueezed_str++
でしょうか? アドレスがインクリメントされていないようです。お知らせ下さい。
PS。substring() 関数は機能しています。:)
char *squeeze (char *str, int start_index, int end_index, char *ref_str) {
char *substr;
substr = malloc (sizeof (*substr));
if (substr == NULL) {
printf ("Unable to allocate memory.\n");
exit (EXIT_FAILURE);
}
char *squeezed_str;
squeezed_str = malloc (sizeof (*squeezed_str));
if (squeezed_str == NULL) {
printf ("Unable to allocate memory!\n");
exit (EXIT_FAILURE);
}
substr = substring (str, start_index, end_index);
int substr_len = strlen (substr);
int refstr_len = strlen (ref_str);
char chr1, chr2; chr1 = chr2 = '\0';
for (int i = 0; i < substr_len; i++) {
chr1 = *(substr+i);
for (int j = 0; j < refstr_len; j++) {
chr2 = *(ref_str + j);
if (chr1 == chr2) {
break;
}
}
if (chr1 != chr2) {
*squeezed_str = *(substr+i);
squeezed_str++;
}
}
return squeezed_str;
} /* end of squeeze() */