Потому что name
и vname
не содержат строк. Указав для каждого из них размер 4 с 4-символьной строкой в качестве инициализатора, вы указали компилятору хранить только эти 4 символа без '\0'
нулевого символа, обозначающего конец строки.
Поведение не определено; вам (не) повезло, что он не просто разбился.
Удалите 4
(или измените его на 5
):
char name[] = "sara";
char vname[] = "sara";
РЕДАКТИРОВАТЬ : Вот модифицированная версия вашей программы, которая исправляет несколько других проблем (см. Комментарии). Кроме пропущенных 4
в объявлениях name
и vname
, большинство изменений не имеют прямого отношения к вашему вопросу.
#include <stdio.h> /* needed for printf */
#include <string.h> /* needed for strcmp */
int main(void) /* correct declaration of "main" */
{
char name[] = "sara"; /* omit 4 */
char vname[] = "sara"; /* omit 4 */
if (strcmp(name, vname) == 0)
{
printf("OK\n"); /* \n is at the *end* of the line */
}
else
{
printf("Error\n"); /* as above */
}
return 0; /* not absolutely required, but good style */
}