Прочитать две строки и записать их в два отдельных массива - C (СИ)
Формулировка задачи:
Всем привет, мне нужно из файла прочитать две строки и записать их в два отдельных массива. То есть логин и пароль пользователя соответственно. Так как это данные администратора, то они заносятся в файл вручную. Я пытался прочитать таким образом, где proverka1[50] - это переменная для хранения логина, прочитанного из файла, proverka2[50] - для пароля.
Проблема в данном случае совершенно понятна, первый вызов функции читает слово ADMIN из файла а потом ещё кучу каких-то пробелов, потом второй вызов читает вторую строку и опять же кучу пробелов. Из-за этого при сравнении массивов proverka1 и proverka2 с логином и паролем неправильное. Есть догадки что лишние пробелы берутся из-за sizeof. Видимо он вычисляет размер массива login, который равен 50. Но для функции fgets это ведь не проблема, потому как она читает до символа переноса строки, а получается что прочитывает 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);
}
}
}Решение задачи: «Прочитать две строки и записать их в два отдельных массива»
textual
Листинг программы
char login[50], password[50];
FILE* f = fopen("Text.txt", "r");
fscanf(f, "%49s\n%49s", login, password);
Объяснение кода листинга программы
- Объявляются две переменные типа char - login и password, каждая из которых может хранить строку длиной до 50 символов.
- Открывается файл
Text.txtдля чтения с помощью функции fopen. - Вводится две строки из файла с помощью функции fscanf.
%49s- это спецификатор формата, который указывает на чтение строки, заканчивающейся символом новой строки (\n).loginиpassword- это имена переменных, в которые будут сохраняться прочитанные строки.loginиpasswordдолжны быть объявлены как массивы, способные хранить строки длиной до 50 символов.