【发布时间】:2019-09-23 08:45:19
【问题描述】:
我正在尝试从知道其位置的字符串中删除一个字符。我知道有很多方法,但是我尝试过的方法会在附加代码的第 4 行的标题中产生错误。我尝试的目的是使旧字符上的指针指向字符串的下一个字符。有人可以帮我理解这个问题吗?
char* remove_char(char str[], int pos)
{
str = str[pos] + str;
if (pos < strlen(str)-1)
&(str[pos]) = &(str[pos+1]);
else
str[strlen(str)-1] = 0;
return str;
}
【问题讨论】:
-
您可能只需要删除 & 乱码并执行
str[pos] = str[post+1];作为经验法则,切勿通过反复试验进行编程。在代码似乎可以正常工作之前,随意使用 & 或 * 是不明智的做法。 -
@Lundin 这不是随机的。您的解决方案不起作用,因为它将字符替换为下一个字符,并且字符串中的下一个字符是下一个字符的 2 倍。我在这里尝试做的是分配指针而不是它们的对象。
-
@dandan78 thx 我会调查的
-
我什至不知道你想做什么。这里没有“指针”(复数),只有一个指针。
str是一个数组,它在传递给函数时会衰减为本地指针。您可以随意摆弄该指针,它不会影响原始数组。至于取随机字符的地址,不会产生可修改的指针。