Posez votre question Signaler

Fonctions paramètre char * [Résolu]

Mr_Hooligan 15Messages postés 8 novembre 2009Date d'inscription - Dernière réponse le 11 nov. 2009 à 22:50
Bonjour,
Sa fait un petit moment maintenant que j'essaie de trouver une solution à mon problème.
Le but du programme avec 2 fonctions.
Dans la fonction main, l'utilisateur entre un prénom.
Utilisation de la fonction secondaire pour ajouter le message "Bonjour " devant le prénom et renvoyer la chaine dans main pour l'affichage.
voilà ma réflexion :
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>


char Chaine(char *ch1 )
{
	char *ch2, *ch3;

	strcpy (ch2,"Bonjour ");

	strcpy (ch3,ch2);
	strcat (ch3,ch1);

	return (*ch3);
}

void main(void)
{
	char *chaine1, *chaine2;

	clrscr();

	printf ("Prenom : ");
	scanf ("%s",chaine1);

	strcpy (chaine2, Chaine(*chaine1) );

	printf ("%s",*chaine2);

	getch();

}

Le problème viendrai apparemment du strcpy... j'ai tenté plusieurs solutions mais rien n'y fait.
Merci à tous ceux qui me répondrons.
Lire la suite 

Fonctions paramètre char * »

17 réponses
Réponse
+1
moins plus
char *chaine1, *chaine2;
scanf ("%s",chaine1);

Je ne vais pas plus loin dans le code car je sais déjà que le programme va probablement se terminer par un 'segment fault'.
Je te laisse trouver cette grosse bêtise; rassure-toi tu n'es pas la premier à la faire et cette erreur est la bête noire de beaucoup de mauvais programmeur qui prennent le 'C' pour du Basic et qui, par la suite, vont évidemment dénigrer ce langage ;-)
Bonne réflexion.
Ajouter un commentaire
Réponse
+0
moins plus
Ce code là fonctionne très bien.

Je sais pas si tu parle du " & " qui manquerait, il n'y en a pas besoin.
Pacorabanix- 8 nov. 2009 à 16:41
tu crées un pointeur.

Mais il ne pointe sur rien du tout de valable a priori et malgré cela tu essayes de changer la valeur de ce vers quoi il pointe
Pacorabanix- 8 nov. 2009 à 16:43
pour être plus clair : les chaines sont des pointeurs vers le début d'un tableau de char se terminant par le caractère \0 . Je vois bien le pointeur dans ton programme, mais où est le tableau ? :)
Ajouter un commentaire
Réponse
+0
moins plus
char *chaine; ou char chaine[25]; sa change rien dans le code ( j'ai les deux versions et exactement le même problème )

je crois savoir d'où vient le problème, faut que je test mais c'est pas pour aujourd'hui.
Char Snipeur- 9 nov. 2009 à 10:14
Exact, il faut utiliser malloc pour chaque pointeur que tu utilises.
PacorabanixMr_Hooligan - 9 nov. 2009 à 22:01
par contre il n'y a pas besoin de "caster" avec (char *) ton pointeur crée avec malloc. voir http://c.developpez.com/faq/?page=bonnes_pratiques#DIVERS_malloc
Char Snipeur- 10 nov. 2009 à 08:12
marrant quand je pense le nombre d'exemples immense que j'ai vu avec ce cast.
On peut tout de même lui trouver un intéret : rappeler le type de la variable lorsque l'allocation n'est pas faite à la déclaration.
Ajouter un commentaire
Réponse
+0
moins plus
Ok merci Char Snipeur, je vais essayer tout de suite.
Pacorabanix- 9 nov. 2009 à 21:24
un pointeur est comme un panneau qui pointe vers une ville.

Lorsque tu déclares habituellement un tableau int tableau[25] par exemple, c'est vrai que "tableau" est considéré comme un "int *". Le nom du tableau est en effet un pointeur vers le début, un panneau vers le début du tableau en mémoire. Mais le C fabrique bien le tableau. Par contre si tu ne déclares que le pointeur, que le panneau, et bien il n'y a pas de ville vers laquelle il pointe.

Je ne sais pas si mon image était foireuse... ça t'aide à comprendre ?
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour votre reponse.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
je suis en 1 ere année developpement informatique je trouve quelques difficultés dans cest exercice d'algorithme si vous pouvez m'aider je serai contente
le but de l'exerice est de lire un verbe du 1er groupe dans le tableau verbe et d'afficher sa conjugaison au present de l'indicatif exemple verbe bosser je bosse ;tu bosse.........
on s'assurera que le verbe fourni se termine bien par 'er' on supposera qu'il s'agit d'un verbe régulier autrement dit on admettra que l'utilisateur ne fournira pas un verbe tel que manger (le programme affichera alors nous mangeons)
la questiion !!:ecrire les procédures et fonctions suivantes:
la procédure LECTURE VERBE pour ranger un verbe ds un tableau de taille maximale 20 la saise se termine par un point
la fonction VERIFIER VERBE pour verifier que le verbe saisi au clavier se termine bien par ER
poir conjuguer un verbe on utilise un tableau RESULTAT à deux dimensions


merci bien comme meme
Pacorabanix- 11 nov. 2009 à 22:50
Demander de l'aide pour vos exercices sur CCM

De plus, il vous faut poster un nouveau sujet, pas répondre à un autre qui n'a pas grand chose à voir.
Ajouter un commentaire
Réponse
+0
moins plus
c'est facil comme c'est acil on va leur sortir le fameut SDZ pour qu'il bavard.lol
Pacorabanix- 11 nov. 2009 à 22:50
merci d'éviter ce genre de messages inutiles voire insultants. Charte d'utilisation de CommentCaMarche.net - Respect d'autrui
Ajouter un commentaire
Ce document intitulé « Fonctions paramètre char * » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?