Как сравнить строки с переменными в С?

Рейтинг: -2Ответов: 1Опубликовано: 05.06.2023

Решил попробовать написать простенькую систему регистрации и входа на С. Никак не могу решить одну проблему связанную с входом. Нужно чтобы пользователь вводил ник, а после пароль, затем скрипт открывал файл в который все это сохраняется при регистрации, считывает его и если находит совпадение, то выводит, что-то в роде - "регистрация прошла успешно!". Так вот мне все не удается реализовать сравнение введенных данных с данными в файле. Прошу шарящих подсказать мне с решением этой проблемы

вод код функции входа:

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. Ну а сравнить потом числа, я думаю, знаете как :)