сравнивая строки - PullRequest
       26

сравнивая строки

2 голосов
/ 15 мая 2009

Учитывая этот кусок кода

char *pass="test";
int keyPressed;
char *password=(char *)malloc(PASS_LENGTH*sizeof(char));
int index=0;
printf("Enter the password please\n");
do
{
    keyPressed=getch();
    password[index++]=keyPressed;
}
while(keyPressed!=13);
int result=strcmp(pass,password);

Я думаю, вы понимаете, что я хочу сделать:)
Я прочитал в * пароле "test", но результат не равен 0, некоторые объяснения были бы хороши:)

Ответы [ 6 ]

6 голосов
/ 15 мая 2009

Поскольку я думаю, что это домашнее задание ... попробуйте написать строки после того, как они нажали Enter, и посмотрите, сможете ли вы увидеть разницу.

5 голосов
/ 15 мая 2009

Вы должны удалить последний символ и «закрыть» строку: положить

password[index - 1] = '\0' 

после окончания.

1 голос
/ 15 мая 2009

Предложение akappa исправит проблему strcmp, которую вы видите.

Также обратите внимание, что вы используете неправильный объем памяти, но при записи этой памяти вы не проверяете размер выделенного блока. Написанный код позволит писать после конца «пароля».

0 голосов
/ 15 мая 2009

Возврат каретки включен в конце password.

0 голосов
/ 15 мая 2009

Вы должны malloc PASS_LENGTH + 1 и установить пароль [index] = 0 перед последней строкой кода. как strcmp и другие подпрограммы C str работают со строками ASCIIZ

0 голосов
/ 15 мая 2009

Похоже, это будет "test \ n", потому что вы уже добавили keyPressed. Тем самым также переполняется переменная пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...