Так что я пытаюсь изучить c, однако я не могу понять, почему этот код не будет работать должным образом.C не может понять, если заявление
#include <stdio.h>
#include <stdlib.h>
int main()
{
char userName[25];
char myName[25] = "myName";
printf("Please enter your name: \n");
scanf("%s", userName);
if(userName == myName)
{
printf("Congratulations your name is myName!!!");
}
else
{
printf("Your name is %s how disappointing...", userName);
}
return 0;
}
Проблема в том, что утверждение if никогда не возвращает true. Может ли кто-нибудь помочь мне с этим?
Пожалуйста, правильно отформатируйте свой код. – Olaf
Урок, char username [25] объявляет указатель, char myName [25] объявляет другой указатель, указывая на два разных места в памяти (в этом случае в стеке), поэтому указатели никогда не равны (содержимое каждого ячейка памяти может быть одинаковой, но ** память ** должна сравниваться, а не ** указатели **) – Les
относительно этой строки: 'scanf ("% s", userName);' Этот вызов scanf() позволяет пользователю перехватить буфер userName []. предложите: «scanf («% 24s », userName); И проверьте возвращаемое значение из scanf() (а не значения параметра), чтобы убедиться, что операция прошла успешно. – user3629249