Как сравнить строки с переменными в С?
Решил попробовать написать простенькую систему регистрации и входа на С. Никак не могу решить одну проблему связанную с входом. Нужно чтобы пользователь вводил ник, а после пароль, затем скрипт открывал файл в который все это сохраняется при регистрации, считывает его и если находит совпадение, то выводит, что-то в роде - "регистрация прошла успешно!". Так вот мне все не удается реализовать сравнение введенных данных с данными в файле. Прошу шарящих подсказать мне с решением этой проблемы
вод код функции входа:
void Login()
{
FILE *file = fopen("data.txt", "r");
char name[100], buffer[256];
long long pass;
printf("Enter your user-name: ");
scanf("%s", &name);
printf("Enter your password: ");
scanf("%lld", &pass);
while((fgets(buffer, 256, file)) != NULL)
{
//тут по идеи должна быть та самая проверка считываемой строки с введенными данными,
//но увы я не смог ее реализовать в силу того, что учу С не больше 2 недель
//поверьте я пытался
printf("%s", buffer);
}
fclose(file);
}
Ответы (1 шт):
Вашу задачу можно разбить на несколько подзадач. У вас есть строка, хранящаяся в массиве buffer, состоящая из имени пользователя и пароля, разделённых пробелом. Поэтому первая подзадача - разделение строки на имя пользователя и пароль. Для этого посмотрите, как работать с функцией strtok. Эта функция по ходу своей работы испортит исходную строку, поэтому строки, которые эта функция последовательно возвращает, лучше скопировать в какие-нибудь другие массивы. Смотрите для этого функцию strcpy.
Далее вам нужно сравнить имя пользователя с введённым. Сравниваются строки с помощью функции strcmp. Функция возвращает 0, если строки равны.
Если имя пользователя совпало, то остаётся проверить пароль. Раз пароль у вас числовой, то число, содержащееся в файле, нужно перевести из строкового формата в числовой. Для этого воспользуйтесь функцией atoll. Ну а сравнить потом числа, я думаю, знаете как :)