[C] Help!! Renvoi de pointeur.

Résolu/Fermé
igeek96 Messages postés 143 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 30 mars 2010 - 30 juin 2008 à 18:27
igeek96 Messages postés 143 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 30 mars 2010 - 1 juil. 2008 à 23:52
Bonjour à tous,

Je voudrais envoyer un "pointeur sur tableau vide" a une fonction pour que cette dernière remplisse le tableau vide. Voyez :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void mettreEnEtoiles(const char chaineDeBase[], char pointeurSurResultat)
	{
	long i = 0, longeurChaineDeBase = 0;
	char x[] = "*";
	
	longeurChaineDeBase = strlen(chaineDeBase);
	
	for(i = 0 ; i < longeurChaineDeBase ; i++)
		{
		strcat(*pointeurSurResultat, x);
		}
	}

int main(int argc, char *argv[])
	{
	char mot[] = "Exemple";
	char resultat[100] = "";
	char *pointeurSurResultat = &resultat[100];
	
	mettreEnEtoiles(mot, pointeurSurResultat);
	
	printf("%s", resultat);
 
	return 0;
	}


Lors de la compilation, ca plante et les erreurs suivantes sont indiquées (lignes en gras dans le code ci dessus) :

14 : error > invalide type argument of 'unary *'
24 : warning > passing argument 2 of 'mettreEnEtoiles' makes integer pointer without a cast

Pouvez vous m'aider s'il vous plait? Mercii

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
30 juin 2008 à 19:09
Salut,

Que veux-tu faire avec ton code ? Afficher des * à la place d'une chaine ?

Cdt
0
igeek96 Messages postés 143 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 30 mars 2010 45
30 juin 2008 à 19:36
En fait je veux remplacer les lettres du mot exemple par des * dans une autre chaine :

J'ai une chaine Exemple et une chaine vide, dans la chaine vide je veux 7 * car dans exemple il y a 7 lettres dans exemple.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
30 juin 2008 à 21:06
Salut,

Désolé pour le temps de réponse.
J'ai refait ton code en entier, ta fonction mettreEnEtoiles était inutile.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
        char *mot="exemple";
        char *resultat=(char*)malloc(strlen(mot)*sizeof(char));

        memset(resultat,'*',strlen(mot));

        printf("%s\n",resultat);
        return 0;
}


Cdt
0
igeek96 Messages postés 143 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 30 mars 2010 45
1 juil. 2008 à 23:52
T'inquiète pas pour le temps de reponse... Merci beaucoup!! En fait je viens juste d'apprendre l'allocation dynamique aujourd'hui...
0