Fonctions paramètre char *

Résolu/Fermé
Mr_Hooligan Messages postés 15 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 20 novembre 2009 - 8 nov. 2009 à 13:58
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 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.

            
                
A voir également:

7 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
8 nov. 2009 à 14:27
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.
1
Mr_Hooligan Messages postés 15 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 20 novembre 2009
8 nov. 2009 à 14:34
Ce code là fonctionne très bien.

Je sais pas si tu parle du " & " qui manquerait, il n'y en a pas besoin.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
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
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
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 ? :)
0
Mr_Hooligan Messages postés 15 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 20 novembre 2009
8 nov. 2009 à 23:20
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.
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
9 nov. 2009 à 02:21
Char *chaine; ou char chaine[25]; sa change rien
Ah bon puisque tu le dis ... ;-)
0
Mr_Hooligan Messages postés 15 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 20 novembre 2009 > loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017
9 nov. 2009 à 08:56
Au lieu de mettre des réponses comme sa, un peu d'aide serait le bienvenue.
Je sais bien que c'est pas la même chose, mais que j'emploie l'un ou l'autre dans le code sa ne change rien aux résultat.

Est ce qu'utiliser le malloc changerait quelque chose ?

    char *chaine;
    chaine = (char *)malloc (25*sizeof(char)); 


Si possible d'avoir un coup de main plutôt que des remarques à la c..
Merci d'avance.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297 > Mr_Hooligan Messages postés 15 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 20 novembre 2009
9 nov. 2009 à 10:14
Exact, il faut utiliser malloc pour chaque pointeur que tu utilises.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660 > Mr_Hooligan Messages postés 15 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 20 novembre 2009
9 nov. 2009 à 22:01
par contre il n'y a pas besoin de "caster" avec (char *) ton pointeur crée avec malloc. voir https://c.developpez.com/faq/?page=Bonnes-pratiques#DIVERS_malloc
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
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.
0
Mr_Hooligan Messages postés 15 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 20 novembre 2009
9 nov. 2009 à 10:24
Ok merci Char Snipeur, je vais essayer tout de suite.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour votre reponse.
0
sousou01_girls Messages postés 4 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
11 nov. 2009 à 22:25
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
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
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.
0
adnanforum Messages postés 204 Date d'inscription samedi 24 janvier 2009 Statut Membre Dernière intervention 21 janvier 2010 38
11 nov. 2009 à 22:30
c'est facil comme c'est acil on va leur sortir le fameut SDZ pour qu'il bavard.lol
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
11 nov. 2009 à 22:50
merci d'éviter ce genre de messages inutiles voire insultants. Charte d'utilisation de CommentCaMarche.net - Respect d'autrui
0