我正在尝试编写一个大写函数,将字符串中的所有小写字符转换为它们的大写等效字符。
但是,我的代码中有一个总线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语句。

最佳答案

导致崩溃的原因是代码修改了字符串文本字符串文本中的字符放在受保护的内存区域中,因此不能更改:它是未定义的行为。
替换这个

uppercase("cold");

有了这个:
char cold[] = "cold";
uppercase(cold);

现在字符串的字符被放置在可修改的内存区域中,允许您根据需要进行更改。

关于c - 产生没有指针的大写字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20723508/

10-11 22:07
查看更多