1

我在高中,必须使用 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 但这不起作用)

4

1 回答 1

2

在这种情况下,空字段没有任何意义。实际上,您正在从文件中读取 N 个字节,并将它们存储到内存中。您告诉计算机将这部分内存解释为字符串。无需执行任何操作即可知道该字段是否为

您最好的选择是查看此内存,并尝试猜测它是否看起来像一个实际地址。

也许你可以先看看这个地址字符串,存储在一个固定大小的字符数组中,是否有一个终止字符。如果不是,您可能会猜到它是无效的,并可能在字符数组的末尾添加此终止字符。

于 2012-12-12T07:37:39.137 回答