Soucis de pointeur ('fin je pense) - C - Programmation
Marsh Posté le 19-10-2004 à 20:12:53
fgets pour saisir une chaine, scanf et gets à eviter
et chaine[ strlen(chaine) ] == '\0';
Marsh Posté le 19-10-2004 à 20:34:29
merci du conseil mais entre temps j'ai trouvé d'ou venait mon probleme : condition de sortie fausse et je me suis planté dans l'indice des tableau de chaine.
merci quand meme.
nico
Marsh Posté le 19-10-2004 à 20:37:40
oui, mais il me semble que c'est ce que je disais en te montrant que
chaine[ strlen(chaine) ] == '\0'; pour ton indice y tu aurais du prendre strlen(chaine) - 1
edit : pense à utiliser size_t pour les indices
Marsh Posté le 19-10-2004 à 20:43:37
# printf("Entrez la chaine : " );
# scanf("%s", chaine);
j'adore -->
printf("plop" ); fflush(stdout);
fgets(chaine, sizeof chaine, stdin);
# printf("%s", chaine_inverse); //Affichage de la chaine inversé
# printf("\n" );
faudrait voir à économiser les printf
sinon niveau algo, réfléchi un peu, tu peux retourner ta chaine sur place
Marsh Posté le 19-10-2004 à 22:32:14
ok je note tout ca, je vais surement rappliquer dans la soirée car en fait la finalité du prog c'est de vérifier que la chaine entrée est un palindrome. il doit avoir deja plein de source la dessus mais j'essai de la faire seul.
Sinon fflush(stdout) ca vide le buffer ?
Marsh Posté le 19-10-2004 à 22:52:25
Bon ca fonctionne bisarement :
> ./pal
Entrez la chaine : nico
ocin
> ./pal
Entrez la chaine : nicolas
salocin(
> ./pal
Entrez la chaine : nic
cin¿
Comment se fait t'il que ca fonctionne pour certain mot et pas d'autre, au début je pensais que ct un probleme de parité, mais enfait non...
vous en pensez quoi ?
Code :
|
Marsh Posté le 19-10-2004 à 23:12:15
en fait si tu n'avais pas besoins de copier la chaine, tu pourrais faire qu'un demi parcour
Code :
|
Marsh Posté le 19-10-2004 à 23:21:12
Ton code marche presque. Il y a une petite erreur pour les mots ayant un nombre pair de lettres
/a.out
pliz enter the chaine : abcde
edcba
./a.out
pliz enter the chaine : abcd
dcbax
Marsh Posté le 19-10-2004 à 23:25:53
meme avec ton code cris56 j'obtient des erreurs bizarres.
pliz enter the chaine : nic
cin¨h(Øë¿¿
Marsh Posté le 19-10-2004 à 23:26:39
Oups j'ai rien dit perso car j'avais pas vu qu'il fallait décommenter
Marsh Posté le 19-10-2004 à 23:30:27
le truc c'est qu'aucun de vous deux n'a lu nos recommandations. Et après plusieurs exemples vous voyez toujours pas : y a pas de putain d'\0' à la fin de votre reversed_string
Marsh Posté le 19-10-2004 à 23:32:10
oui, dans le deuxieme cas j'ai oublié le caractere null
char reverse_string[100] = "";
ou
for( i = 0; i < len; i++ )
{
reverse_string[i] = string[ len - (i + 1) ];
}
reverse_string[i] = '\0';
Marsh Posté le 19-10-2004 à 23:34:24
laisse tomber, je n'aurais jamais trouvé si vous me l'aviez pas dit explicitement.
Marsh Posté le 19-10-2004 à 23:40:19
quand je disais transformation sur place, je pensais pas copier-transformer_sur_place
Marsh Posté le 19-10-2004 à 23:44:14
c'etait pour qu'en décommentant ca marche direct, mais c'etais sous entendu qu'une seule chaine etait necessaire dans ce cas
j'ai mis l'autres car dans ce cas fait c'etais la solution la plus aproprié je pense, copier string danss reverse_string dans l'ordre inverse
Marsh Posté le 19-10-2004 à 23:44:38
edit : dsl
Marsh Posté le 20-10-2004 à 13:09:36
Bonjour à tous,
J'ai finis le palindrome mais je voudrais à présent faire une fonction palindrome, j'ai essayer de la faire, mais j'obtient une erreur de compilation et je ne sais que faire, ca doit probablement venir du passage de variable...
> gcc pal2.c -o pal2
pal2.c: In function `palindrome':
pal2.c:29: warning: declaration of `string' shadows a parameter
Code :
|
Marsh Posté le 20-10-2004 à 13:14:24
lol (c'est que je me suis dit quand j'ai posté le message )
Marsh Posté le 20-10-2004 à 13:17:10
déjà c'est pas une erreur
et le message est explicite. Apprend l'anglais
Marsh Posté le 20-10-2004 à 13:21:35
ah yes, jsuis trop bete, j'ai viré le char string[100]
bon ben ca marche c'est cool, merci taz, cris56 et fafounet
Code :
|
Marsh Posté le 19-10-2004 à 19:56:50
Bonsoir à tous,
je vous explique mon probleme, j'essais de faire un programme qui inverse une chaine de caractere mais lorsque je copie les valeur de mon tableau de chaine dans un autre tableau de chaine et que j'affiche le
tableau inversé, je n'obtient pas du tout la meme chose. Je pense que ca doit venir d'une histoire de pointeur mais je ne suis pas sur et je ne sais pas comment y remedier.
Merci d'avance de votre aide.
Nico
Voici le code :
Résultat :
> ./pal
Entrez la chaine : nico
Üë¿inÐ(