String...

Résolu
l0st3d Messages postés 205 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 13 novembre 2009 - 5 juin 2008 à 00:09
l0st3d Messages postés 205 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 13 novembre 2009 - 5 juin 2008 à 00:34
Bonjour à tous, je débute dans le language C et j'ai un petit problème.

Voici la fonction problèmatique

int FormatFromPrimal()
{
    int scanCode = 1;
    char Detector[3];
    printf("[core] FormatFromPrimal called\n");
    while(scanCode < PRIMAL_MEMORY_LENGHT)
    {
        Detector[1] = PRIMAL_MEMORY_DATA[scanCode];
        Detector[2] = PRIMAL_MEMORY_DATA[scanCode+1];
        Detector[3] = PRIMAL_MEMORY_DATA[scanCode+2];
        printf("[code] primal scan >> offset %d >> val '%s' >> strncmp return '%d' \n",scanCode,Detector,strncmp(Detector,"sub",3));
        if (strncmp(Detector,"yok",3) == 0)
            printf("[core] some data found at offset: %d\n",scanCode);
        scanCode++;

    }
    return 0;
}
 
Voila.. le problème est que la variable Detector prend une valeur ... aproximative? ...
Voyez le resultat

[code] primal scan >> offset 257 >> val '­-yok    +?-ws?@' >> strncmp return '1'

Les données sonts présente mais le reste je ne sais pas d'ou sa vien, aussi, strncmp de détecte jamais le mot voulu (ici yok), il retourne toujours 1.
Merci de m'aider!

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
5 juin 2008 à 00:31
1. Une chaine de caractère doit se terminer par un caractère nul.

2. Un tableau commence TOUJOURS à l'index 0.

...
char Detector[4];
...

Detector[0] = PRIMAL_MEMORY_DATA[scanCode];
Detector[1] = PRIMAL_MEMORY_DATA[scanCode+1];
Detector[2] = PRIMAL_MEMORY_DATA[scanCode+2];
Detector[3] = 0;

C++ (@++)<!--
3
l0st3d Messages postés 205 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 13 novembre 2009
5 juin 2008 à 00:34
C'est parfais, je te remercis beaucoup pour ton aide!
0
Rejoignez-nous