我正在尝试编写一个大写函数,它将字符串中的所有小写字符转换为大写字符。
但是,我的代码中出现 Bus 10 错误。我知道在 C 中不能修改字符串文字;所以,我不确定这是否是正确的方法。
我的代码如下:
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int uppercase(char source[])
{
int i;
for(i=0; i<=strlen(source); ++i)
if (source[i]>= 'a' && source[i]<= 'z')
source[i]= source[i]-'a' +'A';
else
source[i]=source[i];
}
int main(){
uppercase("cold");
return 0;
}
理想情况下,此函数应返回 COLD。我想错误出在我的整个 if 语句中。
最佳答案
导致崩溃的原因是您的代码修改了字符串文字。字符串文字中的字符被放置在 protected 内存区域中,因此不能更改:它使用未定义的行为。
替换这个
uppercase("cold");
用这个:
char cold[] = "cold";
uppercase(cold);
现在字符串的字符被放置在内存的可修改区域,允许您根据需要进行更改。
关于c - 生成没有指针的大写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723508/