IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probleme dans ma fonction en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut Probleme dans ma fonction en c
    Bonjour a tous le monde je suis debutant dans la programmation je suis en 1er bts informatique gestion je code en turbo c.
    Je veux faire une petite application ou on definit 2 chaine de caracteres ayant le meme nombre de lettre exemple: bonjour,sexbomb et en ressortir bsoenxjbooumrb
    *|*|*|*|*|*|*|

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include<conio.h>
    char melange(char texte1[8],char texte2[8]);
    main()
    	{
    	char phrase1[8]={"bonjour"};
    	char phrase2[8]={"sexbomb"};
    	char phrase[16];
    	int i;
    	clrscr();
     
    	for(i=0;phrase1[i]!=0;i++)
    	printf("%c",phrase1[i]);
    	printf("\n");
    	for(i=0;phrase2[i]!=0;i++)
    	printf("%c",phrase2[i]);
    	phrase=melange(phrase1,phrase2);
     
    	getch();
    	}
    	char melange(char texte1[8],char texte2[8])
    	{
    	char phrase[16];
    	int i;
    	int j;
    	do
    	{
    	for(i=0;texte1[i]!=0;i++)
    		{
    		for(i=0;texte2[i]!=0;i++)
    			phrase[i]=texte1[i];
    			j=i+1;
    			phrase[j]=texte2[i];
     
    		}
     
    	}while(texte1[i]!=0 || texte2[i]!=0);
    	for(i=0;phrase[i]!=0;i++)
    	{
    	printf("%c",phrase[i]);
    	}
    	return(phrase);
     
     
     
     
     
    	}
    J ai un message d erreur lvalue requiered in function main
    Non portable pointer conversion in fonction melange

    Si quelle qu 'un a une aide a me proposé
    merci d'avance

    ps:je suis débutant

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Dans la fonction main(), phrase est un tableau. Il n'est donc pas possible d'ecrire phrase=...

    En outre dans melange(), phrase est un tableau local il n'est donc pas possible de le retourner (car il est detruit a la fin de la fonction). De plus melange() est censee retourner un char or toi tu cherches a renvoyer une chaine de caractere donc char*.

    Plusieurs solutions sont possibles:
    - Lors de l'appel a melange(), tu lui fournit le tableau devant contenir la chaine resultante (ainsi que la taille maw pour gerer les debordements de buffer). La fonction melange() travaille alors dans ce tableau.
    - La fonction melange alloue la memoire necessaire avec malloc() et retourne l'adresse de cette zone.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    okmerci pour ta reponse je vais essayé dans le sens la meme si je suis pas sur d avoir tout compris

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Dans la fonction main(), phrase est un tableau. Il n'est donc pas possible d'ecrire phrase=... j ai pas mis phrase= mais phrase[i]=

    la chaine chaine resultante c est phrase[16]

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par jacko842
    Dans la fonction main(), phrase est un tableau. Il n'est donc pas possible d'ecrire phrase=... j ai pas mis phrase= mais phrase[i]=
    Si ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    phrase=melange(phrase1,phrase2);

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    ok

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jacko842
    Bonjour a tous le monde je suis debutant dans la programmation je suis en 1er bts informatique gestion je code en turbo c.
    <...>
    ps:je suis débutant
    Alors tu vas relire d'urgence ton cours sur les chaines, parce que là, tu fais n'importe quoi. Je rappelle qu'une chaine est terminée par un 0 et que celui-ci occupe la place d'un caractère.

    D'autre part, pour créer dynamiquement un tableau, on peut utiliser malloc().

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    a la fin ca donne ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include<stdio.h>
    main()
    	{
    	char phrase1[7]={"hlowrd"};
    	char phrase2[6]={"el ol"};
    	char phrase[13];
    	int i,j;
    	char melange(char phrase1[7],char phrase2[6]);
    	clrscr();
     
    	melange(phrase1,phrase2);
     
     
    	 getch();
    	}
    	char melange(char texte1[7],char texte2[6])
    	{
    	 int i,j;
    	 char phrase[13];
     
    	 for(i=0,j=0;i<7;i++,j+=2)
    		{
    		phrase[j]=texte1[i];
    		phrase[j+1]=texte2[i];
     
    		}
     
    		return(puts(phrase));
     
     
    	}
    ps:le caractère nul (code ASCII 0) indiquant la fin de la chaîne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] fonction xhr.onreadystatechange
    Par dimainfo dans le forum AJAX
    Réponses: 1
    Dernier message: 28/05/2009, 14h59
  2. probleme dans une fonction qui affiche le nombre de ligne du texte
    Par étoile de mer dans le forum Débuter
    Réponses: 7
    Dernier message: 19/09/2008, 08h25
  3. probleme dans deux fonctions
    Par gadalla dans le forum Delphi
    Réponses: 1
    Dernier message: 14/07/2007, 03h27
  4. Probleme dans une fonction de test
    Par blondelle dans le forum C++Builder
    Réponses: 6
    Dernier message: 25/01/2007, 19h07
  5. Probleme dans une fonction
    Par Leroimage dans le forum Langage
    Réponses: 10
    Dernier message: 22/02/2006, 19h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo