我有一个 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。(字符串长度可能不正确,但这不应该搞砸整个事情。)