@re3r0

Почему Массив символов не ровняется обычной строке?

char var[] = {'a', 'b', 'c', '\0'};
char var2[] = "abc";

if (var == var2)
{
	printf("%s\n", "all is ok !"); 
}
  • Вопрос задан
  • 89 просмотров
Решения вопроса 2
@galaxy
Потому что ваш код сравнивает указатели (адреса в памяти для строк в var и var2).

Для сравнения строк есть функции strcmp (и ее вариации).
Ответ написан
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Потому что так делать нельзя :)

Это не перл, не питон и не любой другой язык с автоматическим управлением памятью. Это язык, где нужно явно указывать - что тебе надобно, старче.

Вы сравниваете два указателя, то есть две переменные, содержащие адреса в куче. Разумеется, они будут разные.

Для сравнения строк есть strcmp(), strncmp(), strcasecmp(), memcmp() и прочие подобные
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы