Код должен преобразовывать каждую букву каждого слова в верхний регистр.Но выполнение кода приводит к ошибке шины.Что вызывает ошибку шины? - PullRequest
2 голосов
/ 27 сентября 2019

Код должен преобразовывать каждую букву каждого слова в верхний регистр.Но выполнение кода приводит к ошибке шины.Что вызывает ошибку шины?

#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);
}

Вход: sEbas

Выход: SEBAS

1 Ответ

3 голосов
/ 27 сентября 2019

Строка "sEbas" представляет собой const char[], поэтому вы не должны использовать ее для инициализации char* name.

Если вы скомпилируете этот код в Visual Studio 2019, он не скомпилируется и будетсообщит вам об ошибке:

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

Вы можете заменить ее на:

char name[] = "sEbas";

...