C程序:如何读取一个文件并写入另一个文件?索引

C程序:如何读取一个文件并写入另一个文件?索引,c,indexing,C,Indexing,我正在尝试编写一个程序,它将读取一个文件的现有记录,然后将它们索引到另一个文件中。这些记录存储在名为“players.bin”的文件中,该文件是每个记录包含的CSV格式(username、lastname、firstname、numwins、numlosses、numties),我想将它们索引到名为“players.idx”的新文件中。但是,players.idx文件将只包含成对的序列,其中username是播放器的用户名,seq#是播放器文件中存储的播放器记录的序列号 以下是我到目前为止的想法

我正在尝试编写一个程序,它将读取一个文件的现有记录,然后将它们索引到另一个文件中。这些记录存储在名为“players.bin”的文件中,该文件是每个记录包含的CSV格式(username、lastname、firstname、numwins、numlosses、numties),我想将它们索引到名为“players.idx”的新文件中。但是,players.idx文件将只包含成对的序列,其中username是播放器的用户名,seq#是播放器文件中存储的播放器记录的序列号

以下是我到目前为止的想法:

 fd = open("players.bin", O_WRONLY | O_CREAT |
        O_APPEND, S_IRWXU);
 if (fd > 0) {
    //Read the contents of the file (if any)
    //and then print out each record until the end of file
    while (num = read(fd, &plyr, sizeof (plyr)) != 0) {
        printf("%s, %s, %s, %d, %d, %d\n\n", plyr.user_name,
                plyr.last_name, plyr.first_name, plyr.num_wins,
                plyr.num_losses, plyr.num_ties);
    }
    close(fd);
}

fd2 = open("players.idx", O_WRONLY | O_CREAT |
        O_APPEND, S_IRWXU);
if (fd > 0) {
    while (num = read(fd, &plyr, sizeof (plyr)) != 0) {   
        num = write(NOT SURE WHAT TO PUT HERE);
        record_count++;  //I am going to use this to keep track of seq numbers
    }
    close(fd2);
}

我真的不知道该怎么做…谢谢你找一本关于用C打开、阅读和编写文件的书/教程。这相当简单,一旦你知道怎么做,只需打开一个文件阅读,另一个文件写作

很抱歉,我没有说得更具体,但为了详细解释,我必须写一个长篇大论的答案,这对你来说仍然不如读一本关于这个主题的书或一本教程好

在掌握了这一点之后,看看
fscanf
fprintf
,这两个函数将帮助您轻松解析和编写索引


编辑:我真的建议不要跳过书/教程部分。你打开文件时出错了,我怀疑你也读错了.bin,不过我必须查看程序的其余部分才能确定。

寻找一本关于用C打开、阅读和编写文件的书/教程。这相当简单,一旦你知道如何使用d哦,这只是打开一个文件进行读取,然后打开另一个文件进行写入的问题

很抱歉,我没有说得更具体,但为了详细解释,我必须写一个长篇大论的答案,这对你来说仍然不如读一本关于这个主题的书或一本教程好

在掌握了这一点之后,看看
fscanf
fprintf
,这两个函数将帮助您轻松解析和编写索引


编辑:我真的建议不要跳过书/教程部分。您打开的文件错误,我怀疑您也错误地读取了.bin,尽管我必须查看您程序的其余部分才能确定。

您需要进行排序吗?如果不需要,那么您是否可以使用
fscanf()解决此问题
printf()
?不,我不需要,只是按顺序读取。在这种情况下,我如何使用fscanf()?fscanf与fprintf类似,但它从文件句柄读取而不是写入文件句柄。您需要进行任何排序吗?如果不需要,那么您不应该使用
fscanf()
printf()解决这个问题吗
?不,我不需要,只是按顺序读取每个文件。在这种情况下,我如何使用fscanf()?fscanf与fprintf类似,但它从文件句柄读取而不是写入。