Си, Си++, Нарушение доступа для записи

void separateAndPrint(char* string, int start)
{
    int i = start;
    int count = 0;
    while (string[i] != '\0' && string[i] != ' ')
    {
        count++;
        i++;
    }

    //Выделяем память под слово
    char* word = (char)malloc(100);

    if (word != NULL) {
        for (int i = 0; string[start] != ' ' && string[start] != '\0'; i++, start++)
        {
            word[i] = string[start]; //тут ошибка[![введите сюда описание изображения][1]][1]
        }

        word[i + 1] = '\0';

        for (int i = 0; word[i] != '\0'; i++)
        {
            printf("%c", word[i]);
        }
    }

    return word;
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Mikhailo
char* word = (char)malloc(100);

Здесь происходит урезание 32 или 64 бит указателя до 8 бит char. ВероятноЮ вы хотели написать

char* word = (char*)malloc(100);

Но если у вас С, то вообще никакое приведение не надо — вполне сработает

char* word = malloc(100);

Приведение требуется только в С++.

→ Ссылка