Caractère de fin de chaine
Résolu/Fermé
fabinou87
Messages postés
30
Date d'inscription
mercredi 8 mai 2013
Statut
Membre
Dernière intervention
9 mars 2016
-
9 mai 2013 à 15:07
fabinou87 Messages postés 30 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 9 mars 2016 - 9 mai 2013 à 16:26
fabinou87 Messages postés 30 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 9 mars 2016 - 9 mai 2013 à 16:26
A voir également:
- Caractère de fin de chaine
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
9 mai 2013 à 15:31
9 mai 2013 à 15:31
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]);
fabinou87
Messages postés
30
Date d'inscription
mercredi 8 mai 2013
Statut
Membre
Dernière intervention
9 mars 2016
2
9 mai 2013 à 15:42
9 mai 2013 à 15:42
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.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
9 mai 2013 à 16:02
9 mai 2013 à 16:02
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];
fabinou87
Messages postés
30
Date d'inscription
mercredi 8 mai 2013
Statut
Membre
Dernière intervention
9 mars 2016
2
9 mai 2013 à 16:26
9 mai 2013 à 16:26
Effectivement, en rajoutant le '\0', je découpe comme je veux mes chaînes dans mon tableau à 2 dimensions =) Merci infiniment !