将文件中的信息写入存档文件?

时间:2012-09-30 19:29:17

标签: c buffer printf

我是一个相对不错的Java程序员,但对C来说是全新的。因此,其中一些功能,指针等给我带来了一些麻烦......

我正在尝试创建一个存档文件(我基本上是在重写ar sys调用)。我可以创建我想要的文件,将必要的信息存储到我定义的结构中。但现在我遇到了麻烦。我想将结构写入存档文件。所以我想我可以使用sprintf()将我的结构放入缓冲区然后只写缓冲区。

sprintf(stat_buffer, "%s", file_struct);
write(fd, stat_buffer, 60);

这似乎不起作用。我可以告诉归档文件的大小增加了所需的60个字节,但如果我cat该文件,它会打印废话。

此外,尝试写入文件的实际内容也不起作用......

    while (iosize = read(fd2, text_buffer, 512) > 0) {
        write(fd, text_buffer, iosize);
        if (iosize == -1) {
            perror("read");
            exit(1);
        }
    }

我确信这是一个相对容易的解决方案,只是好奇它是什么!

谢谢!

1 个答案:

答案 0 :(得分:2)

%s用于打印字符串。因此sprint将在遇到\0字符时停止。

相反,您可以直接将结构写入文件。 write(fd, &file_struct, sizeof(filestruct));但是你不能用猫叫它读它。您仍然可以从另一个unarchiver程序中读取文件内容并将其存储到结构read(fd, &filestruct, sizeof(filestruct));

此系统并不完美,因为它会使用您的计算机endianess存储结构并且不可移植。如果您想要做得对,请查看ar file format specification

相关问题