2011-06-26 2 views
0

J'ai un petit programme qui va chercher une chaîne dans un fichier. Cette chaîne a une partie variable à la fin et est toujours précédée d'un octet qui indique la taille.strcmp agit bizarre

Par exemple, nous allons être à la recherche de "http: //" dans "aaaaa.http: //www.example.combbbbb" (le code ASCII est 0x17

Disons que nous "". . ont ouvert le fichier le code à exécuter est:

while(car != EOF){ 
    car = fgetc(file[ii]); // we get everything in the file 
    lastBuffStart=ftell(file[ii]); 
    ij=1; 
    buffer[0]=car; // we start editing the buffer 
    printf("\n%d (%c) - %d (%c) ",car,car,base[0],base[0]); 
    while(ij<(buffsize-1)){ 
     buffer[ij]=fgetc(file[ii]); 
     printf("\n | %d (%c) - %d (%c) ",buffer[ij],buffer[ij],base[ij],base[ij]); 
     ij++; 
    } 

    fseek(file[ii],lastBuffStart,0); // we get back to the old position before the buffer continues 

    if(strcmp(buffer,base)==0){ // we compare 
     byteSize = (ftell(file[ii])-1); // we get the position of the size byte 
     printf("\nFound : 0x%x\n",byteSize); 
     } 
    } 

Nous lisons tous les fichiers et mettre dans un tampon les caractères suivants pour comparer avec la base (http: //).

Mon problème est de supprimer le printf ("\ n |% d) (% c) -% d (% c)", tampon [ij], tampon [ij], base [ij], base [ij]); rien n'est trouvé ...

Je ne peux vraiment pas voir ce que je fais mal.

Pouvez-vous m'aider?

Merci d'avance.

Répondre

3

Vous avez oublié de mettre à zéro le tampon. Alternativement, vous devriez utiliser memcmp au lieu de strcmp. En outre, le code serait beaucoup plus clair si vous avez utilisé fread au lieu d'une boucle while.

+0

Merci. C'était tellement ... simple. Je ne sais pas pourquoi je n'ai pas vu ça. – MisterDoy