Копия строковой функции и стек ошибок вокруг переменной повреждены - PullRequest
0 голосов
/ 10 марта 2019

Мой код:

void CopyString(char psSource[], char pcDestination[]) {
unsigned char ucCountCharPosition;
    for(ucCountCharPosition = 0; psSource[ucCountCharPosition]; ucCountCharPosition++) {
        pcDestination[ucCountCharPosition] = psSource[ucCountCharPosition];
        }
    printf("%s", pcDestination);  }

int main() {
    unsigned char psSource[] = "test";
    unsigned char pcDestination[] = "";
    CopyString(psSource, pcDestination);
    return 0;
}

И у меня возникла проблема с исключением:

Ошибка проверки во время выполнения # 2 - Поврежден стек вокруг переменной 'pcDestination'.

Я думаю, что этот цикл бесконечен, но в этой позиции psSource[ucCountCharPosition] я не могу использовать функцию, похожую на sizeof (из-за моего требования к домашней работе).

Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 10 марта 2019
unsigned char pcDestination[] = "";

Это определяет однобайтовый массив в стеке и инициализирует его для всех нулей.

Недостаточно места для строки, которую вы пытаетесь скопировать.

Попробуйте:

    unsigned char pcDestination[5];

У вас есть другая проблема: ваша функция оставляет строку назначения не завершенной.

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