C toLowerCase函数不起作用 – 访问冲突

我有一个简单的函数,它将一个字符数组作为参数,并将所有字符转换为小写.但是,我得到一个奇怪的访问冲突错误.这是代码:

void toLower(char *rec)
{
 int i=0;
 while (rec[i]!='\0')
 {
  if (rec[i]>='A' && rec[i]<='Z') 
               rec[i]='a'+rec[i]-'A';  //this is where I get an error - assigning the
                                       //the value to rec[i] is the problem
  i++;
 }
}

你能告诉我我的错误是什么吗?
谢谢

最佳答案
在评论中,您说您将文字字符串传递给函数,如下所示:

palindrome("In girum imus nocte et consumimur igni")

palindrome将其参数传递给toLower.这不起作用,因为字符串文字是只读的,并且您正在尝试修改它.相反,你可以使用:

char str[] = "In girum imus nocte et consumimur igni";
palindrome(str);

或者你可以让回文将其参数复制到一个数组中并在其上调用toLower.

转载注明原文:C toLowerCase函数不起作用 – 访问冲突 - 代码日志