Member 14825085 Ответов: 2

Как я могу сравнить массив char с char*


Как я могу сравнить char name[10] с char *p;

Что я уже пробовал:

Я делаю что-то вроде этого


If(strcmp(name, p) == 0){
printf("что-то" );
}else printf("что-то еще");


Но они никогда не равны, даже если я знаю, что они есть

2 Ответов

Рейтинг:
12

k5054

strcmp() должно сработать просто отлично в этом случае. если это не так то name и что *p укажите на являются различный. Помнить это strcmp() не возвращает true, если случай отличается (например, "Hello" не равно "hello"), и он не возвращает true для подстрок (например, "Hello" не равно "Hello world")
Что произойдет, если вы это сделаете

printf("name = \"%s\"\n", name);
printf("*p   = \"%s\"\n", p);
printf("strcmp(name, p) = %d\n", strcmp(name, p));

если name и *p равны, то вы должны получить значение 0 для strcmp. Если они не равны, это должно появиться в printfs. Возможно, у вас есть конечные пробелы или конечная буква "\n", если вы получаете ввод из файла или клавиатуры.


Рейтинг:
0

OriginalGriff

Просто чтобы добавить комментарии k5054, strcmp ожидает, что обе строки будут завершены null: так как name это строка фиксированной длины, вполне возможно, что она не завершается, и это означает, что она не будет соответствовать "правильной" строке.

Существует также strncmp[^] функция, которая позволяет сравнивать максимальную длину строки, так что если name является фиксированной длиной и не может быть прекращена, это может быть лучшим выбором для сравнения.