Resultat d'une fct est un paramétre d'entée de la mm fct
Résolu
neocol
Messages postés
69
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
Je voudrais avoir votre aide, sur un truc que j'arrive pas moi aussi à saisir, si çà existe déjà ou non.
* J'ai une fonction Copier qui retourn un Char* chaine :
char* COPIER(char* bloc, int pas1, int pas2);
- Je copie tous les caractères entre un pas1 et pas2 ( pas1 et pas2 désignons le numero des espaces: bloc = AAA_pas1_BBB CCC_pas2_DDD EEE [ici je vais copier BBB CCC]).
- bloc est une chaine de caractères, les mots de dans sont séparés par des espaces.
* Dans le main : pour récuperer le résultat de la fonction copier,
je fais, exemple : char* chaine = char* COPIER(char* bloc, int pas1, int pas2);
Ce que je veux , est-ce qu'il y a u une possibilté pour que le retour de la fonction copier soit parmi les paramétres d'entrées de la fonction? je m'explique
au lieu de faire :
++ char* chaine = char* COPIER(char* bloc, int pas1, int pas2);
j'aurais un truc comme :
++ COPIER(char* bloc, int pas1, int pas2, char* chaine);
c-à-d le résultat va être directement stocké dans chaine,
et sa veut dire dans le main , je directement écrire :
COPIER(char* bloc, int pas1, int pas2, char* chaine); ?
J'en ai besoin pour mon travail.Merci
Je voudrais avoir votre aide, sur un truc que j'arrive pas moi aussi à saisir, si çà existe déjà ou non.
* J'ai une fonction Copier qui retourn un Char* chaine :
char* COPIER(char* bloc, int pas1, int pas2);
- Je copie tous les caractères entre un pas1 et pas2 ( pas1 et pas2 désignons le numero des espaces: bloc = AAA_pas1_BBB CCC_pas2_DDD EEE [ici je vais copier BBB CCC]).
- bloc est une chaine de caractères, les mots de dans sont séparés par des espaces.
* Dans le main : pour récuperer le résultat de la fonction copier,
je fais, exemple : char* chaine = char* COPIER(char* bloc, int pas1, int pas2);
Ce que je veux , est-ce qu'il y a u une possibilté pour que le retour de la fonction copier soit parmi les paramétres d'entrées de la fonction? je m'explique
au lieu de faire :
++ char* chaine = char* COPIER(char* bloc, int pas1, int pas2);
j'aurais un truc comme :
++ COPIER(char* bloc, int pas1, int pas2, char* chaine);
c-à-d le résultat va être directement stocké dans chaine,
et sa veut dire dans le main , je directement écrire :
COPIER(char* bloc, int pas1, int pas2, char* chaine); ?
J'en ai besoin pour mon travail.Merci
A voir également:
- Resultat d'une fct est un paramétre d'entée de la mm fct
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Parametre windows - Guide
- Netflix paramètre compte - Guide
3 réponses
J'ai pensé à changer la fct à int Copier(char* bloc, int pas1, int pas2, char* chaine), mais je reçois toujours une segmentation fault.
Bonjour,
Oui c'est tout à fait possible.
Le segfault est probablement obtenu parce que tu n'as pas alloué ta chaîne (malloc par exemple).
Ce qui donnerait :
Oui c'est tout à fait possible.
Le segfault est probablement obtenu parce que tu n'as pas alloué ta chaîne (malloc par exemple).
Ce qui donnerait :
int main(void) {
/*définition de bloc, pas1 et pas2*/
resultat=malloc(strlen(bloc)+1);
COPIER(bloc, pas1,pas2, resultat);
printf("après : %s\n", resultat);
return 0;
}
Bonjour,
J'ai résolu mon pb, voici un exemple démonstratif :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void intChange(int* a)
{
*a = 14;
}
void strChange(char** str)
{
free(*str);
*str = malloc(6 * sizeof (char));
strcpy(*str, "hello");
}
int main()
{
int nb = 5;
char* str = NULL;
printf("Avant: %i\n", nb);
intChange(&nb);
printf("Après: %i\n", nb);
str = malloc(7 * sizeof (char));
strcpy(str, "coucou");
printf("Avant: %s\n", str);
strChange(&str);
printf("Après: %s\n", str);
free(str);
return 0;
}
Effectivement, le pb était l'allocation de la mémoire pour la chaine de retour.
Merci pour votre aide.
J'ai résolu mon pb, voici un exemple démonstratif :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void intChange(int* a)
{
*a = 14;
}
void strChange(char** str)
{
free(*str);
*str = malloc(6 * sizeof (char));
strcpy(*str, "hello");
}
int main()
{
int nb = 5;
char* str = NULL;
printf("Avant: %i\n", nb);
intChange(&nb);
printf("Après: %i\n", nb);
str = malloc(7 * sizeof (char));
strcpy(str, "coucou");
printf("Avant: %s\n", str);
strChange(&str);
printf("Après: %s\n", str);
free(str);
return 0;
}
Effectivement, le pb était l'allocation de la mémoire pour la chaine de retour.
Merci pour votre aide.