строка — Как узнать, если запись, прочитанная из двоичного файла, имеет пустые поля? Переполнение стека

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

Поэтому я писал код в базе данных сотрудников. Фрагмент кода:

userdb user;
fstream fil;
while(fil.read((char*)&user,sizeof(userdb)))
{
cout<<user.name;
cout<<user.pass;
cout<<user.age;
cout<<user.address;
}
fil.close();

Теперь проблема в том, что если у пользователя нет своего адреса, введенного в базу данных, компилятор отображает мусор.

Как я могу проверить, не имеет ли значение ничего (мусора), чтобы не выводить его на экран?
(Я пробовал address [0] = ‘\ 0’ и strcmp («», address) == 0, и это не работает)

1

Решение

Пустое поле ничего не значит в этом контексте. Действительно, вы читаете N байтов из файла, сохраняя их в памяти. Вы говорите компьютеру интерпретировать эту часть памяти как строку. Ничего не поделаешь, чтобы узнать, является ли поле пустой или нет.

Лучше всего было бы взглянуть на эту память и попытаться Угадай выглядит ли это как фактический адрес или нет.

Может быть, сначала вы могли бы посмотреть, есть ли в этой адресной строке, хранящейся в массиве символов фиксированного размера, символ завершения. Если нет, вы могли бы Угадай что он недействителен, и, возможно, добавьте этот символ завершения в конце массива символов.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector