2010-12-05 17 views
0

peut vous aider à me comprendre ce qui est le problème dans mon code .. je voulais modifier une ligne spécifique .... thnxfichier d'édition en utilisant fseek

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 

int main(){ 
    char arr[50]; 
    char arr2[50]; 
    char arr3[50];  
    FILE *stream = NULL; 
    FILE *stream2 = NULL; 
    stream = fopen("studentinfo.txt", "rt"); 
    stream2 = fopen("studentinfo2.txt", "w+"); 
    char* token; 
    char dlm[] = ","; 

    printf("Enter student id: "); 
    scanf("%s", arr2); 
    printf("New student id: "); 
    scanf("%s", arr3); 
    while(!feof(stream)){ 
     fgets(arr,100,stream); 
     fprintf(stream2,"%s",arr); 
     token = strtok(arr,dlm); 
     if(strcmp(arr2, token)==0){ 
     fseek (stream2 , 0 , SEEK_CUR); 
     fputs (arr3 , stream2); 
     } 
    } 
    fclose (stream2); 
    fclose (stream); 
    getch(); 
} 
+2

Je crois que si vous donnez à vos variables des noms plus significatifs, cela facilitera la compréhension de votre code et vous aidera à trouver des erreurs. Vous savez déjà que 'arr2' est un tableau en regardant la définition; pourquoi ne fournissez-vous pas une signification supplémentaire en nommant cette variable, par ex. 'student_id', et' arr3 -> new_student_id', ou similaire? – stakx

Répondre

5

Vous ne pouvez pas « modifier des lignes spécifiques ». Vous pouvez remplacer les octets qui sont actuellement dans le fichier, mais si vous avez besoin de remplacer avec moins ou plus d'octets, vous devez réécrire le reste du fichier après eux.