The code is supposed to transform every letter of every word to uppercase. But running the code results in a bus error. What causes the bus error?

做~自己de王妃 提交于 2019-12-07 21:10:41

问题


The code is supposed to transform every letter of every word to uppercase. But running the code results in a bus error. What causes the bus error?

#include <stdio.h>

char *ft_strupcase(char *str)
{
    int index;

    index = 0;
    while (str[index] != '\0')
    {
        if (str[index] >= 97 && str[index] <= 122)
            str[index] = 65 + str[index] - 97;
        index++;
    }
    return (str);
}
int main()
{   
    char *name = "sEbas";
    printf("%s\n", ft_strupcase(name));
    return (0);
}

Input: sEbas

Output: SEBAS


回答1:


The string "sEbas" is a const char[], so you shouldn't use it to initialize char* name.

If you compile this code on Visual Studio 2019, it won't compile and will tell you the error:

cannot convert from 'const char [6]' to 'char *'

You can replace it with:

char name[] = "sEbas";



来源:https://stackoverflow.com/questions/58127175/the-code-is-supposed-to-transform-every-letter-of-every-word-to-uppercase-but-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!