concatener des "phrases" dans un char*
Bonjour,
J'aimerais vous poser une question.
Voici un bout de code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| void single_converter(char* input_currency, double input_amount) {
int i;
double resultat;
char* output_currency = (char*) malloc(sizeof(char)*3);
printf("Conversion pour: %s %f.\n",input_currency,input_amount);
for (i=0; i<5; i++) {
output_currency = determine_currency(i);
resultat = convert(input_currency,output_currency, input_amount);
printf("%s %.3f\n",output_currency,resultat);
}
} |
J'aimerais que les affichages des differents printf soient ecrits dans un char*.
C'est pour un tme d'info, en fait on doit utiliser les tubes, et faut qu'en fait, que le processus fils transmette les resultats au père et donc ca m'aurait arrangé que toutes ces phrases là soient dans le char*.
J'ai voulu au debut tester en mettant des sprintf au lieu des printf, pour sauvegarder à chaque fois les differents affichages dans le char*, mais à chaque sprintf, malheuresement, il ecrase ce qu'il y avait avant et resultat, à la fin on a juste dans le char*, la dernière phrase...
J'ai aussi eu l'idee, d'ecrire de creer un char** temporaire, pour que chaque phrase soit ecrise dans une case du tableau, mais après faudra quand même concatener chaque case du char** avec le char*.
J'ai eu aussi l'idee d'utiliser strcat, mais le pb ,c'est qu'il faut absolument que le char* de destination soit vide, sinon ca marche pas :-(.
Quelqu'un a une idée simple et efficace lol?
Merci
A+
Re: concatener des "phrases" dans un char*
Citation:
Envoyé par thierry_b
J'ai eu aussi l'idee d'utiliser strcat, mais le pb ,c'est qu'il faut absolument que le char* de destination soit vide, sinon ca marche pas :-(.
Ben non. Il faut que la chaîne réceptacle soit assez grande pour contenir la chaîne d'origine (correctement formée) et la chaîne que l'on souhaite concaténer ( correctement formée elle aussi). Et rien d'autre...
Re: concatener des "phrases" dans un char*
Citation:
Envoyé par thierry_b
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| void single_converter(char* input_currency, double input_amount) {
int i;
double resultat;
char* output_currency = (char*) malloc(sizeof(char)*3);
printf("Conversion pour: %s %f.\n",input_currency,input_amount);
for (i=0; i<5; i++) {
output_currency = determine_currency(i);
resultat = convert(input_currency,output_currency, input_amount);
printf("%s %.3f\n",output_currency,resultat);
}
} |
J'aimerais que les affichages des differents printf soient ecrits dans un char*.
http://emmanuel-delahaye.developpez.....htm#char_star
On peut définir une chaine d'une taille suffisante et utiliser sprintf() dans une boucle à la manière d'un strcat() :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#include <stdio.h>
int main (void)
{
char s[128];
int n = 0;
int i;
for (i = 0; i < 5; i++)
{
n += sprintf (s + n, "%2d", i);
}
printf ("'%s'\n", s);
return 0;
} |
produit