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
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