Supprimer espace langage C
Discutez d'informatique ici !
-
Cimogard
- Membre Naturel
- Messages: 12
- Enregistré le: 05 Fév 2019, 23:20
-
par Cimogard » 03 Avr 2019, 19:22
Bonjour,
Je chercher a ajouter des espaces entre chaque lettre en langage C.
Seulement je n'arrive pas à effectué ce que je veux . Pour l'instant j'ai ca :
- Code: Tout sélectionner
void main() {
char ch[100];
printf("entrer chaine");
gets(ch);
int i=0;
while(ch[i] != '\0'){
ch[i++]=' ';
ch[i]= ch[i];
i++;
}
ch[i+1]='\0';
printf("%s",ch);
}
Mais lorsque je lance, quand je marque Bonjour il va m'afficher : o j u
Quelqu'un pour m'aider ?
Merci d'avance
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 12:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 03 Avr 2019, 20:07
ch[i++]=' ';
ARRGGG
si tu es à la iéme boucle, ça rajoute un espace à la position i+1 de la boucle et ça augmente i de 1 !!!!
ch[i]= ch[i]; <- affecte le même caractère à la place du caractère
i++;
-
danyL
- Membre Rationnel
- Messages: 682
- Enregistré le: 03 Jan 2015, 13:29
-
par danyL » 03 Avr 2019, 20:16
Cimogard a écrit: ch[i++]=' ';
bonsoir
avec cette ligne tu écrases le contenu de la chaine saisie, un caractère sur 2 tu le remplaces par un espace
tu pourrais utiliser une autre variable pour ta chaine de sortie
-
Cimogard
- Membre Naturel
- Messages: 12
- Enregistré le: 05 Fév 2019, 23:20
-
par Cimogard » 03 Avr 2019, 20:22
Je ne vois toujours pas, j'ai essayé de mettre mon i=-1 et cela m'affiche maintenant B o j u
-
Cimogard
- Membre Naturel
- Messages: 12
- Enregistré le: 05 Fév 2019, 23:20
-
par Cimogard » 03 Avr 2019, 20:33
J'ai enfin réussi en changeant ma variable
Merci
- Code: Tout sélectionner
#include<stdio.h>
void main() {
char ch[100];
printf("entrer chaine");
gets(ch);
int i=0;
int j=0;
size_t t=strlen(ch);
char chaine[t];
while(ch[i] != '\0'){
chaine[j++]=' ';
chaine[j]= ch[i];
i++;
j++;
}
printf("%s",chaine);
}
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 03 Avr 2019, 22:24
Hi
Ton code reste incorrect et 'marche' par chance.
Ta variable chaine devrait etre deux fois plus grande que ta variable ch, or tu ne la définis qu'avec la taille de ch.
Regarde lexecution avec valgrind pour observer ton problème mémoire.
Par ailleurs, une idée classique dans ce genre d'indexation est d'utiliser i*qqch. (Ici, *2)
Ce qui te permet ici d'itérer sur ch, et pour chaque i, d'écrire chaine[i*2]=ch[i] et chaine[i*2+1]=' '
Avec eventuellement le dernier espace non utile..
la vie est une fête

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités