Chaine de caractére en c
Fermé
avneger10
Messages postés
9
Date d'inscription
mercredi 1 mai 2013
Statut
Membre
Dernière intervention
22 janvier 2014
-
1 mai 2013 à 19:19
avneger10 - 3 mai 2013 à 20:45
avneger10 - 3 mai 2013 à 20:45
A voir également:
- Chaine de caractére en c
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 840
1 mai 2013 à 20:07
1 mai 2013 à 20:07
Bonjour,
Si tu veux progresser en C, ça serait bien que tu tiennes compte des remarques que l'on fait sur ton code pour éviter qu'on les répète à chaque fois ;-)
void main()
N'existe pas en C -> int main(void)
gets(ch);
Obsolète. On utilise fgets(). Je te laisse chercher.
for (l=0;ch[l]!='\0';l++)
{}
Tu peux mettre : for(l=0;...); au lieu de mettre {}
Sinon pour info, tu as la fonction strlen() qui calcule automatiquement. Et si ton but est de recréer la fonction. Alors dans ce cas, enlève string.h ;-).
or(i=0;i<=l;i++)
i<l; Il ne faut pas aller jusque l.
i++;
Il sert à rien le i++. Ton for s'occupe déjà de l'incrémentation...
for (j=l;j=0;j--)
Revois la condition d'exécution : j=0. Et il faut commencer à l-1 puisqu'un tableau commence à l'indice 0.
{printf("%s",ch[j]);}
Soit tu affiches ch[j] qui est un caractère, donc on met : "%c". Soit tu affiches la chaîne globale : printf("%s", ch);
for (k=l;k=0;k--)
Idem que l'autre boucle for. A revoir.
Enfin, n'oublie pas de mettre un return 0;
Et la prochaine fois, merci de poster ton code entre des balises code (bouton "<>" à droite de souligné "S").
A toi de jouer.
Si tu veux progresser en C, ça serait bien que tu tiennes compte des remarques que l'on fait sur ton code pour éviter qu'on les répète à chaque fois ;-)
void main()
N'existe pas en C -> int main(void)
gets(ch);
Obsolète. On utilise fgets(). Je te laisse chercher.
for (l=0;ch[l]!='\0';l++)
{}
Tu peux mettre : for(l=0;...); au lieu de mettre {}
Sinon pour info, tu as la fonction strlen() qui calcule automatiquement. Et si ton but est de recréer la fonction. Alors dans ce cas, enlève string.h ;-).
or(i=0;i<=l;i++)
i<l; Il ne faut pas aller jusque l.
i++;
Il sert à rien le i++. Ton for s'occupe déjà de l'incrémentation...
for (j=l;j=0;j--)
Revois la condition d'exécution : j=0. Et il faut commencer à l-1 puisqu'un tableau commence à l'indice 0.
{printf("%s",ch[j]);}
Soit tu affiches ch[j] qui est un caractère, donc on met : "%c". Soit tu affiches la chaîne globale : printf("%s", ch);
for (k=l;k=0;k--)
Idem que l'autre boucle for. A revoir.
Enfin, n'oublie pas de mettre un return 0;
Et la prochaine fois, merci de poster ton code entre des balises code (bouton "<>" à droite de souligné "S").
A toi de jouer.
1 mai 2013 à 22:01
j'ai amélorer le programme comme vous me l'avez dit mais rien ne se passe
Modifié par fiddy le 1/05/2013 à 22:43
L'incrémentation finale aura quand même lieu.
for (l=0;ch[l]!='\0';l++);
D'ailleurs, il ne faut pas oublier que fgets stocke '\n' dans la chaîne. Donc, il faudrait plutôt mettre : for (l=0;ch[l]!='\0' && ch[l]!='\n';l++);
Ensuite, tu n'as pas tenu compte de toutes mes remarques.
for(i=0;i<=l;i++)
Il ne faut pas aller jusque l...
for (j=l-1;j=0;j--)
Condition j=0 à revoir...
Et je rajoute une remarque :
for (k=l;k<=0;k--)
{
ch[l-k]=ch[k];
}
Il faut échanger les contenus. Une simple affectation n'est donc pas suffisante, il en faut trois (échange de contenu de variables). Et attention avec les indices. k=l => Non l-1. Etc.
3 mai 2013 à 20:34
3 mai 2013 à 20:45