可能重复:
是否可以在 C 中修改 char 字符串?
我有一个将 char* 转换为小写的功能。这是功能:
void toLower(char* word, int length)
{
int i;
for(i = 0; i < length; i++) {
// this I can do
// printf("%c", tolower(word[i]));
// this throws segfault
word[i] = tolower(word[i]);
}
}
当我从 main 中这样调用它时,它会引发一个段错误:
char* needle = "foobar";
toLower(needle, strlen(needle));
我确定问题出在此处的作业中:
word[i] = tolower(word[i]);
但我似乎无法找出正确的方法来做到这一点。我尝试将其传递为char**
,或做*(word+i)
,但都导致相同的问题。