我试图在输入文件中读取256字节的任何数据并将它们的信息构造成结构,然后将该结构写入我的输出文件。由于我不能简单地打开和读取输出文件,我想知道我应该做些什么来确保我已经成功地将结构写入输出文件?
答案 0 :(得分:3)
检查fwrite
的返回值 - 即阅读手册页http://www.cplusplus.com/reference/cstdio/fwrite/
答案 1 :(得分:0)
您可以再次阅读该文件并将其转换为您的结构并检查它的值。
答案 2 :(得分:0)
你有几个基本问题。首先,您需要验证数据 你读过来是有效的。其次,构建了您的数据结构 在内存中,您需要将其写入不同的文件。第三,你想要的 保证这已被正确写出 - 但你没有说 您可以通过什么来验证输出文件的正确性。
读取数据很简单 - fread()是你的朋友。我会读它 全部成为适当大小的(void *)。
我在过去使用/数据输出的类似数据中所做的是 包括一个简单的(取决于应用程序)校验和作为第一个元素 在您的输出数据结构中。使用bcopy()或memcpy()来传输您的读入 将数据输出到输出结构,然后计算数据的校验和 更新校验和字段。
最后,你将所有数据fwrite()到输出文件,并检查返回 value - 写出的对象数。如果有错误(写入数字 不满意),你需要检查errno并处理错误情况。 在我的手册副本(Solaris 11.x)中,可能出现错误代码 fwrite(3c)是fputc(3c)的那些。
最后,最后,您可以确定是否已写入足够的字节 通过立即比较来自stat()调用的statbut到输出文件 打开输出文件后,立即打开你的fwrite()+ fclose() 已经回来了。
答案 3 :(得分:-1)
如果您打开文件以阅读和写入,您还应该能够fseek
到开头(偏移0)并从那里重新读取文件。这假设您可以打开文件进行一起阅读和写作。
答案 4 :(得分:-1)
检查chux建议的返回码。在十六进制编辑器中打开输入和输出文件,并比较前256个字节。 Emacs有一个运作良好的。