c语言 - 一种 ASCII 算法给出分割错误,而另一种则不会



所以如果我这样做,我会得到分段错误:

#include <stdio.h>
#include <cs50.h>
int main(void) 
{
string word = "WORD";
for(int i = 0; word[i] != 0; i++) {
word[i] += 32;
printf("%c", word[i]);
}
}

而如果你这样做:

printf("%c", word[i] + 32);

它按预期工作。什么东西?

string不是标准的C符号,并且可能在cs50.h头文件中定义为:

typedef char* string;

这意味着变量word是对常量数据的引用,这些数据不能更改。所以当你试着做这条线时:

word[i] += 32;

您正试图更改无法写入的数据,因此出现seg错误。

相关内容

最新更新