2010-10-17 16 views
0

J'essaye d'écrire un programme qui lira les enregistrements existants d'un dossier et puis les indexe dans un autre dossier. Les enregistrements sont stockés dans le fichier nommé "players.bin" qui est au format CSV chaque enregistrement contient (nom d'utilisateur, nom, prénom, numwins, numlosses, numties et je veux les indexer dans un nouveau fichier nommé "players.idx". le fichier players.idx ne contiendra qu'une séquence de paires, où nom d'utilisateur est le nom d'utilisateur du joueur et seq # est le numéro de séquence de l'enregistrement du joueur stocké dans le fichier du joueurC programme: Comment lire d'un fichier et écrire dans un autre? Indexation

Voici ce que j'ai trouvé. jusqu'à présent:

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); 
} 

Je suis vraiment confus sur la façon d'aller sur ce ... Merci

+0

Avez-vous besoin de trier? Si ce n'est pas le cas, alors ne devriez-vous pas être capable de résoudre ceci avec 'fscanf()' et 'printf()'? –

+0

Non je ne sais pas, il suffit de lire chaque séquentiellement. Comment est-ce que j'utilise fscanf() dans ce cas? –

+0

fscanf est similaire à fprintf mais il lit à partir d'un descripteur de fichier au lieu d'en écrire un. – rerun

Répondre

3

Rechercher un livre/tutoriel sur l'ouverture, lire et écrire des fichiers en C. C'est assez facile, et une fois que vous savez comment faire, il suffit d'ouvrir un fichier pour lire, et un autre pour écrire. Je suis désolé je ne suis pas plus précis, mais pour expliquer en détail je devrais écrire une réponse loong qui vous ferait encore moins bien que de lire un livre sur le sujet, ou un tutoriel.

Une fois que vous avez une bonne idée de cela, jetez un oeil à fscanf et fprintf, ces deux fonctions vous aideront à analyser et écrire votre index facilement.

éditer: Je recommande vraiment de ne pas sauter la partie livre/tutoriel. Vous ouvrez vos fichiers mal, et je soupçonne que vous lisez le .bin à tort aussi, bien que je devrais voir le reste de votre programme pour être sûr.