Я учусь в средней школе, и обязательно использовать компилятор 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, и это не работает)
Пустое поле ничего не значит в этом контексте. Действительно, вы читаете N байтов из файла, сохраняя их в памяти. Вы говорите компьютеру интерпретировать эту часть памяти как строку. Ничего не поделаешь, чтобы узнать, является ли поле пустой или нет.
Лучше всего было бы взглянуть на эту память и попытаться Угадай выглядит ли это как фактический адрес или нет.
Может быть, сначала вы могли бы посмотреть, есть ли в этой адресной строке, хранящейся в массиве символов фиксированного размера, символ завершения. Если нет, вы могли бы Угадай что он недействителен, и, возможно, добавьте этот символ завершения в конце массива символов.
Других решений пока нет …