所以,我正在尝试编写一个函数,该函数接受一个字符串并将所有小写值更改为大写。这是代码:
void lowerToUpper(char *s)
{
char *p;
for (p = s; *p; p++)
{
if (islower(*p))
*p = toupper(*p);
}
}
int main (int argc, char * argv[])
{
char *pa;
pa = "This is a test.";
printf("The following string will be edited:\n");
printf("%s\n%s\n%s\n", pa);
lowerToUpper(pa);
printf("The string has been edited, and is now as follows:\n");
printf("%s\n%s\n%s", pa);
return EXIT_SUCCESS;
}
问题出在“*p = toupper(*p);”行,这是我遇到分段错误的地方。我的猜测是,问题出在尝试将 toupper(*p) 返回的值分配给 *p 时。在做了一些测试之后,似乎 toupper(*p) 可以工作,但是一旦我尝试将值分配给 *p,我就出现了错误?关于为什么会发生这种情况的任何想法?