Rechercher : dans
Par :

Fonctions paramètre char *

Dernière réponse le 11 nov 2009 à 22:50:51 Mr_Hooligan, le 8 nov 2009 à 13:58:54 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 3.5.5

Meilleures réponses pour « Fonctions paramètre char * » dans :
Javascript - Les fonctions Voir La notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Les fonctions en C++ : surcharge et paramètres par défaut. VoirLes fonctions en C++ : surcharge et paramètres par défaut. 1. La surcharge de fonctions et méthodes de classes, dont le constructeur 2. Utilisation des paramètres par défaut En C++, une même fonction ou méthode de classe peut être...
Paramètres GPRS VoirSi vous possédez un téléphone mobile fonctionnant sous Windows Mobile (smartphone du type HTC, Qtek, etc.), voici les paramètres GPRS pour les trois principaux opérateurs français Orange Orange GSM Orange GPRS Orange MMS Orange...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
Langage C++ - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...

1

loupius, le 8 nov 2009 à 14:27:59

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.

Répondre à loupius

2

Mr_Hooligan, le 8 nov 2009 à 14:34:36

Ce code là fonctionne très bien.

Je sais pas si tu parle du " & " qui manquerait, il n'y en a pas besoin.

Répondre à Mr_Hooligan

3

Pacorabanix, le 8 nov 2009 à 16:41:04

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

Répondre à Pacorabanix

4

Pacorabanix, le 8 nov 2009 à 16:43:39

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 ? :)

Répondre à Pacorabanix

5

Mr_Hooligan, le 8 nov 2009 à 23:20:04

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.

Répondre à Mr_Hooligan

6

loupius, le 9 nov 2009 à 02:21:00

Char *chaine; ou char chaine[25]; sa change rien
Ah bon puisque tu le dis ... ;-)

Répondre à loupius

7

Mr_Hooligan, le 9 nov 2009 à 08:56:46

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.

Répondre à Mr_Hooligan

8

Char Snipeur, le 9 nov 2009 à 10:14:23
  • +1

Exact, il faut utiliser malloc pour chaque pointeur que tu utilises. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

11

Pacorabanix, le 9 nov 2009 à 22:01:44

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

Répondre à Pacorabanix

12

Char Snipeur, le 10 nov 2009 à 08:12:35

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. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

9

Mr_Hooligan, le 9 nov 2009 à 10:24:44

Ok merci Char Snipeur, je vais essayer tout de suite.

Répondre à Mr_Hooligan

10

Pacorabanix, le 9 nov 2009 à 21:24:38

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 ?

Répondre à Pacorabanix

13

aicha, le 11 nov 2009 à 22:19:39

Merci pour votre reponse.

Répondre à aicha

14

sousou01_girls, le 11 nov 2009 à 22:25:56

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

Répondre à sousou01_girls

16

Pacorabanix, le 11 nov 2009 à 22:50:03

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.

Répondre à Pacorabanix

15

adnanforum, le 11 nov 2009 à 22:30:18

C'est facil comme c'est acil on va leur sortir le fameut SDZ pour qu'il bavard.lol

Répondre à adnanforum

17

 Pacorabanix, le 11 nov 2009 à 22:50:51

Merci d'éviter ce genre de messages inutiles voire insultants. Charte d'utilisation de CommentCaMarche.net - Respect d'autrui

Répondre à Pacorabanix