此问题在此处已有答案:
(19个答案)
3天前关闭。
我正在尝试K&R的squeeze
程序。但是,我一直得到一个总线错误。下面的代码直接触发了这个问题。这个程序不应该是可移植的吗?
int main() {
char* str = "foo";
for (int i = 0, j = 0; str[i]; ++i)
str[j] = '.';
}
书中的函数:
void squeeze(char s[], int c)
{
int i, j;
for (i = j = 0; s[i] != '\0'; i++)
if (s[i] != c)
s[j++] = s[i];
s[j] = '\0';
}
1条答案
按热度按时间mum43rcc1#
str
指向一个字符串常量。这样的常量是只读的,所以试图修改它们会触发undefined behavior,在你的特定情况下,这会导致程序崩溃。相反,将
str
声明为数组,可以修改该数组: