Прочитать две строки и записать их в два отдельных массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет, мне нужно из файла прочитать две строки и записать их в два отдельных массива. То есть логин и пароль пользователя соответственно. Так как это данные администратора, то они заносятся в файл вручную. Я пытался прочитать таким образом, где proverka1[50] - это переменная для хранения логина, прочитанного из файла, proverka2[50] - для пароля.
file_admin = fopen("f:\\Visual C++ projects\\Списки!\\Списки!\\PASSWORD ADMIN.txt", "r");
    if (file_admin == NULL) 
        printf("Ошибка открытия файла!\n");
    else
    {
        for (i = 0; i < 2; i++)
        {
            if (i == 0)
            {
                fgets(proverka1, sizeof(login), file_admin);
            }
            if (i == 1)
            {
                fgets(proverka2, sizeof(parol), file_admin);
            }
        }
    }
Проблема в данном случае совершенно понятна, первый вызов функции читает слово ADMIN из файла а потом ещё кучу каких-то пробелов, потом второй вызов читает вторую строку и опять же кучу пробелов. Из-за этого при сравнении массивов proverka1 и proverka2 с логином и паролем неправильное. Есть догадки что лишние пробелы берутся из-за sizeof. Видимо он вычисляет размер массива login, который равен 50. Но для функции fgets это ведь не проблема, потому как она читает до символа переноса строки, а получается что прочитывает 50 символов... Сколько не мучался, проблему не решил, получается только, если через пробел данные прочитать из одной строки и записать в один массив. Господа, надеюсь на вашу помощь!

Решение задачи: «Прочитать две строки и записать их в два отдельных массива»

textual
Листинг программы
char login[50], password[50];
FILE* f = fopen("Text.txt", "r");
fscanf(f, "%49s\n%49s", login, password);

Объяснение кода листинга программы

  1. Объявляются две переменные типа char - login и password, каждая из которых может хранить строку длиной до 50 символов.
  2. Открывается файл Text.txt для чтения с помощью функции fopen.
  3. Вводится две строки из файла с помощью функции fscanf.
    • %49s - это спецификатор формата, который указывает на чтение строки, заканчивающейся символом новой строки (\n).
    • login и password - это имена переменных, в которые будут сохраняться прочитанные строки.
    • login и password должны быть объявлены как массивы, способные хранить строки длиной до 50 символов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы