Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char (char **). Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***). foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction (gdb me confirme que les chaines
ont bien été copiée). Or je ne récupère pas le résultat une f ois sortie
de foo().
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char (char **). Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***). foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction (gdb me confirme que les chaines
ont bien été copiée). Or je ne récupère pas le résultat une f ois sortie
de foo().
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char (char **). Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***). foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction (gdb me confirme que les chaines
ont bien été copiée). Or je ne récupère pas le résultat une f ois sortie
de foo().
Bonjour,
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char (char **). Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***). foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction (gdb me confirme que les chaines
ont bien été copiée). Or je ne récupère pas le résultat une fois sortie
de foo().
Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
tenterai d'expliquer différemment mon problème.
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
#define FREE(x) do { HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, (x));
(x)=NULL; } while(0)
#define REALLOC(pt, x) HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
(pt), (x))
static void foo (char ***RcptList, char **email)
{
int i = 0, j = 0;
if (!email || !RcptList || !*RcptList)
return;
while (*RcptList[i])
i++;
while ( (*RcptList)[i])
Bonjour,
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char (char **). Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***). foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction (gdb me confirme que les chaines
ont bien été copiée). Or je ne récupère pas le résultat une fois sortie
de foo().
Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
tenterai d'expliquer différemment mon problème.
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
#define FREE(x) do { HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, (x));
(x)=NULL; } while(0)
#define REALLOC(pt, x) HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
(pt), (x))
static void foo (char ***RcptList, char **email)
{
int i = 0, j = 0;
if (!email || !RcptList || !*RcptList)
return;
while (*RcptList[i])
i++;
while ( (*RcptList)[i])
Bonjour,
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char (char **). Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***). foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction (gdb me confirme que les chaines
ont bien été copiée). Or je ne récupère pas le résultat une fois sortie
de foo().
Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
tenterai d'expliquer différemment mon problème.
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
#define FREE(x) do { HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, (x));
(x)=NULL; } while(0)
#define REALLOC(pt, x) HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
(pt), (x))
static void foo (char ***RcptList, char **email)
{
int i = 0, j = 0;
if (!email || !RcptList || !*RcptList)
return;
while (*RcptList[i])
i++;
while ( (*RcptList)[i])
On 2008-08-29, Vincent wrote:
> Bonjour,
> Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
> chaines de char (char **). Afin de permettre à la fonction foo() de
> travailler sur le contenue, je passe une référence à ce tableau d e
> pointeur (char ***). foo() semble faire correctement sont travail, du
> moins tant qu'on est dans la fonction (gdb me confirme que les chaines
> ont bien été copiée). Or je ne récupère pas le résultat une fois sortie
> de foo().
> Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
> tenterai d'expliquer différemment mon problème.
> #include <windows.h>
> #include <stdlib.h>
> #include <string.h>
> #include <stdio.h>
> #include <winsock2.h>
> #include <ws2tcpip.h>
Ben, si déjà tu nous donnais du code C compilable ailleurs
que sur une machine Win*, tu augmenterais l'audience des gens
susceptibles de t'aider.
> #define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
> #define FREE(x) do { HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, (x)) ;
> (x)=NULL; } while(0)
> #define REALLOC(pt, x) HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
> (pt), (x))
> static void foo (char ***RcptList, char **email)
Elle est sensée faire quoi cette fct ? Elle reçoit une
ref sur un tableau de char (RcptList), mais **email,
c'est quoi ?
> {
> int i = 0, j = 0;
> if (!email || !RcptList || !*RcptList)
> return;
Ca n'a rien à voir avec ton problème, mais penses-tu
que ce soit une bonne idée de faire un simple "return"
si RcptList == NULL ?
> while (*RcptList[i])
> i++;
Ton tableau des NULL-terminated, et tu cherches sa fin.
C'est ça ?
Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipl ing (Trad. André Maurois)
On 2008-08-29, Vincent <vin-vin-c...@yahoo.fr> wrote:
> Bonjour,
> Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
> chaines de char (char **). Afin de permettre à la fonction foo() de
> travailler sur le contenue, je passe une référence à ce tableau d e
> pointeur (char ***). foo() semble faire correctement sont travail, du
> moins tant qu'on est dans la fonction (gdb me confirme que les chaines
> ont bien été copiée). Or je ne récupère pas le résultat une fois sortie
> de foo().
> Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
> tenterai d'expliquer différemment mon problème.
> #include <windows.h>
> #include <stdlib.h>
> #include <string.h>
> #include <stdio.h>
> #include <winsock2.h>
> #include <ws2tcpip.h>
Ben, si déjà tu nous donnais du code C compilable ailleurs
que sur une machine Win*, tu augmenterais l'audience des gens
susceptibles de t'aider.
> #define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
> #define FREE(x) do { HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, (x)) ;
> (x)=NULL; } while(0)
> #define REALLOC(pt, x) HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
> (pt), (x))
> static void foo (char ***RcptList, char **email)
Elle est sensée faire quoi cette fct ? Elle reçoit une
ref sur un tableau de char (RcptList), mais **email,
c'est quoi ?
> {
> int i = 0, j = 0;
> if (!email || !RcptList || !*RcptList)
> return;
Ca n'a rien à voir avec ton problème, mais penses-tu
que ce soit une bonne idée de faire un simple "return"
si RcptList == NULL ?
> while (*RcptList[i])
> i++;
Ton tableau des NULL-terminated, et tu cherches sa fin.
C'est ça ?
Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipl ing (Trad. André Maurois)
On 2008-08-29, Vincent wrote:
> Bonjour,
> Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
> chaines de char (char **). Afin de permettre à la fonction foo() de
> travailler sur le contenue, je passe une référence à ce tableau d e
> pointeur (char ***). foo() semble faire correctement sont travail, du
> moins tant qu'on est dans la fonction (gdb me confirme que les chaines
> ont bien été copiée). Or je ne récupère pas le résultat une fois sortie
> de foo().
> Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
> tenterai d'expliquer différemment mon problème.
> #include <windows.h>
> #include <stdlib.h>
> #include <string.h>
> #include <stdio.h>
> #include <winsock2.h>
> #include <ws2tcpip.h>
Ben, si déjà tu nous donnais du code C compilable ailleurs
que sur une machine Win*, tu augmenterais l'audience des gens
susceptibles de t'aider.
> #define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
> #define FREE(x) do { HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, (x)) ;
> (x)=NULL; } while(0)
> #define REALLOC(pt, x) HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
> (pt), (x))
> static void foo (char ***RcptList, char **email)
Elle est sensée faire quoi cette fct ? Elle reçoit une
ref sur un tableau de char (RcptList), mais **email,
c'est quoi ?
> {
> int i = 0, j = 0;
> if (!email || !RcptList || !*RcptList)
> return;
Ca n'a rien à voir avec ton problème, mais penses-tu
que ce soit une bonne idée de faire un simple "return"
si RcptList == NULL ?
> while (*RcptList[i])
> i++;
Ton tableau des NULL-terminated, et tu cherches sa fin.
C'est ça ?
Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipl ing (Trad. André Maurois)
> static void foo (char ***RcptList, char **email)
Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
> static void foo (char ***RcptList, char **email)
Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
> static void foo (char ***RcptList, char **email)
Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
On 30 août, 22:18, Marc Boyer> static void foo (char ***RcptList, char **email)
<...>Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
Je recommence.
Comme je l'ai dit, 3 *, ça rend fou...
On 30 août, 22:18, Marc Boyer <Marc.Bo...@enseeiht.yahoo.fr.invalid>
> static void foo (char ***RcptList, char **email)
<...>
Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
Je recommence.
Comme je l'ai dit, 3 *, ça rend fou...
On 30 août, 22:18, Marc Boyer> static void foo (char ***RcptList, char **email)
<...>Au fait, tu connais par coeur tes priorités d'opérateurs ?
Ce serait pas> while ( (*RcptList)[i])
que tu voudrait tester ?
Je recommence.
Comme je l'ai dit, 3 *, ça rend fou...
> 3 *, ça me donne mal à la tête.
static char **foo (char **RcptList, char **email)
Mais il y a des précautions à prendre quand on utilise realloc() :
http://mapage.noos.fr/emdel/notes.htm#realloc
> 3 *, ça me donne mal à la tête.
static char **foo (char **RcptList, char **email)
Mais il y a des précautions à prendre quand on utilise realloc() :
http://mapage.noos.fr/emdel/notes.htm#realloc
> 3 *, ça me donne mal à la tête.
static char **foo (char **RcptList, char **email)
Mais il y a des précautions à prendre quand on utilise realloc() :
http://mapage.noos.fr/emdel/notes.htm#realloc
Ben, si déjà tu nous donnais du code C compilable ailleurs
que sur une machine Win*, tu augmenterais l'audience des gens
susceptibles de t'aider.
static void foo (char ***RcptList, char **email)
Elle est sensée faire quoi cette fct ? Elle reçoit une
ref sur un tableau de char (RcptList), mais **email,
c'est quoi ?
Ca n'a rien à voir avec ton problème, mais penses-tu
que ce soit une bonne idée de faire un simple "return"
si RcptList == NULL ?
while (*RcptList[i])
i++;
Ton tableau des NULL-terminated, et tu cherches sa fin.
C'est ça ?
Au fait, tu connais par coeur tes priorités d'opérateurs ?while ( (*RcptList)[i])
Ben, si déjà tu nous donnais du code C compilable ailleurs
que sur une machine Win*, tu augmenterais l'audience des gens
susceptibles de t'aider.
static void foo (char ***RcptList, char **email)
Elle est sensée faire quoi cette fct ? Elle reçoit une
ref sur un tableau de char (RcptList), mais **email,
c'est quoi ?
Ca n'a rien à voir avec ton problème, mais penses-tu
que ce soit une bonne idée de faire un simple "return"
si RcptList == NULL ?
while (*RcptList[i])
i++;
Ton tableau des NULL-terminated, et tu cherches sa fin.
C'est ça ?
Au fait, tu connais par coeur tes priorités d'opérateurs ?
while ( (*RcptList)[i])
Ben, si déjà tu nous donnais du code C compilable ailleurs
que sur une machine Win*, tu augmenterais l'audience des gens
susceptibles de t'aider.
static void foo (char ***RcptList, char **email)
Elle est sensée faire quoi cette fct ? Elle reçoit une
ref sur un tableau de char (RcptList), mais **email,
c'est quoi ?
Ca n'a rien à voir avec ton problème, mais penses-tu
que ce soit une bonne idée de faire un simple "return"
si RcptList == NULL ?
while (*RcptList[i])
i++;
Ton tableau des NULL-terminated, et tu cherches sa fin.
C'est ça ?
Au fait, tu connais par coeur tes priorités d'opérateurs ?while ( (*RcptList)[i])
Marc Boyer wrote:
>> while (*RcptList[i])
>> i++;
>
> Ton tableau des NULL-terminated, et tu cherches sa fin.
> C'est ça ?
> Au fait, tu connais par coeur tes priorités d'opérateurs ?
>> while ( (*RcptList)[i])
Non, mais merci d'avoir pointer cela.
Marc Boyer wrote:
>> while (*RcptList[i])
>> i++;
>
> Ton tableau des NULL-terminated, et tu cherches sa fin.
> C'est ça ?
> Au fait, tu connais par coeur tes priorités d'opérateurs ?
>> while ( (*RcptList)[i])
Non, mais merci d'avoir pointer cela.
Marc Boyer wrote:
>> while (*RcptList[i])
>> i++;
>
> Ton tableau des NULL-terminated, et tu cherches sa fin.
> C'est ça ?
> Au fait, tu connais par coeur tes priorités d'opérateurs ?
>> while ( (*RcptList)[i])
Non, mais merci d'avoir pointer cela.
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char
(char **).
Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***).
foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction
(gdb me confirme que les chaines ont bien été copiée).
Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
tenterai d'expliquer différemment mon problème.
static void foo (char ***RcptList, char **email)
{ int i = 0, j = 0;
while (*RcptList[i]) i++;
#define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
*RcptList[i] = MALLOC(strlen(email[j])+1);
memset(*RcptList[i], ' ', strlen(email[j])+1);
strcpy(*RcptList[i], email[j]);
sprintf(to[0],"");
sprintf(to[1],"");
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char
(char **).
Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***).
foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction
(gdb me confirme que les chaines ont bien été copiée).
Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
tenterai d'expliquer différemment mon problème.
static void foo (char ***RcptList, char **email)
{ int i = 0, j = 0;
while (*RcptList[i]) i++;
#define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
*RcptList[i] = MALLOC(strlen(email[j])+1);
memset(*RcptList[i], ' ', strlen(email[j])+1);
strcpy(*RcptList[i], email[j]);
sprintf(to[0],"toto@titi.com");
sprintf(to[1],"qrsfrferf@zer.com");
Dans le code ci-dessous, j'utilise des tableaux de pointeurs sur des
chaines de char
(char **).
Afin de permettre à la fonction foo() de
travailler sur le contenue, je passe une référence à ce tableau de
pointeur (char ***).
foo() semble faire correctement sont travail, du
moins tant qu'on est dans la fonction
(gdb me confirme que les chaines ont bien été copiée).
Je ne sais pas si j'ai été bien clair, dans le cas contraire, je
tenterai d'expliquer différemment mon problème.
static void foo (char ***RcptList, char **email)
{ int i = 0, j = 0;
while (*RcptList[i]) i++;
#define MALLOC(x) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (x))
*RcptList[i] = MALLOC(strlen(email[j])+1);
memset(*RcptList[i], ' ', strlen(email[j])+1);
strcpy(*RcptList[i], email[j]);
sprintf(to[0],"");
sprintf(to[1],"");
{ int i = 0, j = 0;
while (*RcptList[i]) i++;
Et nous y voilà.
Si on se reporte au prototype, il saute aux yeux que l'on ne fait pas
l'indexation au bon endroit, et qu'il manque une paire de parenthèses.
Marc dans news: n'a pas été plus
loin, car il a dû lui paraître évident que ce n'était pas nécessaire.
(news:48bce70c$0$30867$). Mais non : il faut corriger
de la même manière toutes les occurences de RcptList.
{ int i = 0, j = 0;
while (*RcptList[i]) i++;
Et nous y voilà.
Si on se reporte au prototype, il saute aux yeux que l'on ne fait pas
l'indexation au bon endroit, et qu'il manque une paire de parenthèses.
Marc dans news:slrngbjanq.u7a.Marc.Boyer@ubu.enseeiht.fr n'a pas été plus
loin, car il a dû lui paraître évident que ce n'était pas nécessaire.
(news:48bce70c$0$30867$426a34cc@news.free.fr). Mais non : il faut corriger
de la même manière toutes les occurences de RcptList.
{ int i = 0, j = 0;
while (*RcptList[i]) i++;
Et nous y voilà.
Si on se reporte au prototype, il saute aux yeux que l'on ne fait pas
l'indexation au bon endroit, et qu'il manque une paire de parenthèses.
Marc dans news: n'a pas été plus
loin, car il a dû lui paraître évident que ce n'était pas nécessaire.
(news:48bce70c$0$30867$). Mais non : il faut corriger
de la même manière toutes les occurences de RcptList.