Во-первых, посмотрите на следующий простой код:
char str[80] = "This is - my text - for test";
const char s[2] = "-";
char *token;
token = strtok(str, s);
while (token != NULL) {
printf(" %s\n", token);
token = strtok(NULL, s);
}
Функция strtok()
возвращает тип данных char*
и, как вы видели, мы создали переменную с именем token
эта переменная не инициализирована.
Теперь посмотрим на следующий код:
char *buff;
int num = 500;
sprintf(buff, "%d", num);
Результатом предыдущего кода является ошибка uninitialized local variable 'buff'
,
У меня вопрос, почему в первом коде не возникает никаких проблем, в то время как во втором коде произошла ошибка?
Потому что в первом фрагменте вы делать инициализировать переменную token
по телефону strtok
и присваивание результата вызова переменной.
Во втором примере вы оставляете переменную buff
неинициализированный.
Вы можете инициализировать локальную переменную с фактической инициализацией при определении. Или же присваивая переменной в другом месте. Важно то, что вы делаете эту инициализацию или присваивание до Вы используете переменную любым другим способом.
Других решений пока нет …