2010-07-24 2 views
0

Je suis le débogage d'un code dans lequel un fichier .ini est en cours de lecture pour la valeur de chaîne appelée délai d'attente (qui est pris dans un RBUF appelé varibale) Veuillez me dire le contenu du fichier .ini lorsque la condition est la suivante:strlen en tableau

if((strlen(rbuf) > 0) && (rbuf[strlen(rbuf)-1] == '\n')){ 
    rbuf[strlen(rbuf)-1] = '\0'; 
    } 

Quand le débogueur ira-t-il dans la boucle if ci-dessus? Veuillez spécifier le contenu exact de la valeur rbuf (valeur du tampon)

+5

Ces 3 années strlen nuisent à mes yeux. – ruslik

+1

"If loop" est l'argot classique de l'étudiant de première année. Soyez avisé, appelez ça une «déclaration if» car ce n'est pas une boucle du tout. – SoapBox

+0

strchr() semble plus simple. – Nyan

Répondre

4

Lorsque la ligne a une 'longueur de chaîne' (quelque chose de plus grand que 0, sans compter la terminaison nulle) et le caractère final avant le zéro-terminateur un retour à la ligne, il entrera dans le bloc conditionnel et définira cette nouvelle ligne pour être un terminateur null.

Pour vous dire le contenu exact de RBUF, je aurais besoin de connaître le contenu du fichier ini. Mais, par exemple, si vous aviez une ligne de texte comme il:

i love programming

Et laisse supposer qu'il ya une nouvelle ligne à la fin Undisplayed si elle.

Ensuite RBUF commencerait contenant:

`j'aime la programmation \ n \ 0'

20 octets Cest. Strlen renverra 19 (n'incluant pas le caractère null-terminator à la fin).

RBUF [strlen (RBUF) -1] est le caractère '\ n' (à l'index 18 dans le tampon).

donc votre code constaterait qu'un saut de ligne est à l'index 18, et réglez-le '\ 0', alors vous vous retrouvez avec:

i love programming\0\0

dans votre tampon.

0

Difficile à dire avec les informations que vous avez donné, mais:

(strlen (RBUF)> 0): RBUF contient une chaîne non vide (RBUF [strlen (RBUF) -1] == ' \ n '): rbuf contient une chaîne qui se termine par un saut de ligne.

Autre que cela, RBUF pourrait ne contenir un saut de ligne. Ou il peut contian une série de personnages et se termine par un saut de ligne.

Questions connexes