私は C 文字列を持っていて、'$' の最初の出現から切り取られるように短くしたいと考えています。これが私のコードです:
int char_search(char exp[], int s, char what) {
int i, occurrence=-1;
for (i=0; i < s && occurrence == -1; ++i)
if (exp[i] == what)
occurrence = i;
return occurrence;
}
int shorten(char *exp, int maxlength, char *exp_new) {
int l, i;
l = char_search(exp, maxlength, '$');
exp_new = (char *) malloc((l+1)*sizeof(char));
exp_new[l] = '\0';
for (i = 0; i<l; i++)
exp_new[i] = exp[i];
return l;
}
問題は、exp_new ポインター アドレスを上書きし始め、最初の文字のみを実際の配列にコピーすることです。また、exp_new はなぜか NULL を返します。(文字列の長さは正しくないかもしれませんが、それですべてが台無しになることはありません。)