【问题标题】:How to know if record read from binary file has empty fields? C++如何知道从二进制文件读取的记录是否有空字段? C++
【发布时间】:2012-12-12 07:23:24
【问题描述】:

我在读高中,必须使用 Turbo C++ 编译器,我知道这是一个非常古老的编译器,但请理解我的情况。

所以我在员工数据库上编写代码。代码sn-p:

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 但这不起作用)

【问题讨论】:

  • 不过,还是想办法跟上当前的潮流。
  • 是的,我通常使用 Visual Studio,但它是一个学校项目,必须在 TC 上完成。所以别无选择。
  • 读取的数据与文件中的数据完全相同。如果文件包含垃圾,则阅读时无能为力。相反,您应该首先确保不要将垃圾写入文件。此外,如果userdb 结构对字符串使用指针,它将永远无法工作,因为指针不能“按原样”存储。
  • 谢谢约阿希姆。这解决了我的问题。我只是在创建文件时初始化所有其他字段。

标签: c++ string file-io null binaryfiles


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-07-07
    • 2021-12-20
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2023-03-13
    相关资源
    最近更新 更多