Caractère de fin de chaine
Résolu
fabinou87
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
fabinou87 Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
fabinou87 Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Caractère de fin de chaine
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Fin des zfe - Guide
- Chaine tnt gratuite sur mobile - Guide
2 réponses
Bonjour,
for ( i=0 ; i<=8 ; i++ )
{
tmp[i] = tab[0][i]
}
Une chaîne doit se terminer par un '\0'. Il suffit donc de faire tmp[8]='\0';
Tu perdras au passage un caractère. Si c'est gênant, il faudra donc allouer une case de plus (10 au lieu de 9).
Sinon plutôt que faire ta boucle, tu peux faire :
strcpy(tmp[i], tab[0][i]); (en espérant que tu as bien mis un '\0' dans tab.
Et si tu fais ça, juste pour l'afficher, tu peux même te contenter d'un simple : printf("%s", tab[i]);
for ( i=0 ; i<=8 ; i++ )
{
tmp[i] = tab[0][i]
}
Une chaîne doit se terminer par un '\0'. Il suffit donc de faire tmp[8]='\0';
Tu perdras au passage un caractère. Si c'est gênant, il faudra donc allouer une case de plus (10 au lieu de 9).
Sinon plutôt que faire ta boucle, tu peux faire :
strcpy(tmp[i], tab[0][i]); (en espérant que tu as bien mis un '\0' dans tab.
Et si tu fais ça, juste pour l'afficher, tu peux même te contenter d'un simple : printf("%s", tab[i]);
Merci de ta réponse Fiddy.
En fait, je fais ça car je ne peux pas directement afficher tab[i].
Si j'affiche tab[4] par exemple, je veux qu'il m'affiche :
tab[4][0] puis tab[4][1] jusqu'à tab|[4][8]. Mais il continue avec tab[5][0] et jusqu'à tab[8][8].
J'ai donc voulu créer une temporaire pour seulement les 9 caractères voulus.
J'ai essayé de rajouter ceci :
Seulement, j'obtiens toujours le même résultat.
En fait, je fais ça car je ne peux pas directement afficher tab[i].
Si j'affiche tab[4] par exemple, je veux qu'il m'affiche :
tab[4][0] puis tab[4][1] jusqu'à tab|[4][8]. Mais il continue avec tab[5][0] et jusqu'à tab[8][8].
J'ai donc voulu créer une temporaire pour seulement les 9 caractères voulus.
J'ai essayé de rajouter ceci :
char tmp[10]; char tab[9][9]; //déja rempli correctement for ( i=0 ; i<=8 ; i++ ) { tmp[i] = tab[0][i] } tmp[10] = '\0'; printf("%s",tmp);
Seulement, j'obtiens toujours le même résultat.
Si j'affiche tab[4] par exemple, je veux qu'il m'affiche :
tab[4][0] puis tab[4][1] jusqu'à tab|[4][8]. Mais il continue avec tab[5][0] et jusqu'à tab[8][8].
Donc ton tableau n'est pas vraiment correct. En dernière position de chaque ligne, tu devrais avoir un '\0'. Ainsi tu pourrais faire directement printf("%s", tab[4]); sans problème.
tmp[10] = '\0';
Un tableau commence à l'indice 0. Donc il faut mettre tmp[9];
tab[4][0] puis tab[4][1] jusqu'à tab|[4][8]. Mais il continue avec tab[5][0] et jusqu'à tab[8][8].
Donc ton tableau n'est pas vraiment correct. En dernière position de chaque ligne, tu devrais avoir un '\0'. Ainsi tu pourrais faire directement printf("%s", tab[4]); sans problème.
tmp[10] = '\0';
Un tableau commence à l'indice 0. Donc il faut mettre tmp[9];