Функция strcat () в C изменяет случайную величину в моей программе? - PullRequest
0 голосов
/ 27 октября 2019

Вот код, который я написал:

int main(void){

  int m = 8;
  char digits[] = {};

  printf("%d\n" , m);
  strcat(digits, "0");
  printf("%d\n" , m);
}

Я бы ожидал, что переменная m не изменится, но результат будет таким:

8
0

Почему это происходит? Любая помощь будет принята с благодарностью.

1 Ответ

4 голосов
/ 27 октября 2019

Ваш массив 'цифры' не выделен ни одной памяти и имеет нулевой размер. Когда вы обрабатываете его, выполняете 'strcat', C пытается сделать что-то , используя адрес вашей переменной, переполняется и помещает данные в память next в местоположение вашей переменной.

Посмотрите на функцию malloc, вот ссылка, объясняющая это. https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm

...