Функция setTitle () делает cra sh моей программой, если она не является жестко заданной строкой - PullRequest
0 голосов
/ 29 марта 2020

С тех пор я программирую свою игру «Лабиринт» для колледжа. Я почти готов. Просто нужно его украсить.

Здесь я подумал о создании функции setTitle. Всякий раз, когда проверял это, у него были некоторые странные симптомы, которых я никогда не видел.

Так что, если я жестко закодирую массив title [255], title будет добавлен в массив cmd. При установке заголовка в качестве параметра в функции, и я присваиваю значение setTitle (заголовок символа [255]) (например, «* MAZE RUNNER *»), программа падает.

Я пробовал разные размеры массивов, но этот симптом кажется случайным.

Может быть, ошибка новичка на моей стороне?

void setTitle(char title[255]) {
    char cmd[] = "title ";
    strcat(cmd, title);
    system(cmd);
}

int main() {
    setTitle("Hello Stackoverflow! I hope you can help me! feelssadman:(");
    return 0;
}

1 Ответ

0 голосов
/ 29 марта 2020

Проблема с вашей функцией проста; размер, выделенный для массива cmd, автоматически заполняется компилятором с длиной инициализированной строки. Чтобы заставить вашу функцию работать, просто поместите некоторую константу между [] при объявлении строки cmd.

void setTitle(char title[]) {
    char cmd[255] = "title ";
    strcat(cmd, title);
    system(cmd);
}

Также имейте в виду, что 255 не требуется при объявлении параметра функции , Это игнорируется компилятором. Вы также можете заменить его на void setTitle(const char* title) (что на самом деле является title), но обычно и обычно его объявляют как title[], когда вы хотите массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...