OVH Cloud OVH Cloud

pointeurs

2 réponses
Avatar
Jean Pierre Daviau
Bonjour à tous,

Le premier while s'exécute mais le deuxième crashe toujours.

J'ai tenté les possibilités suivantes:
*(Dest +1) = pArg[i];
*(Dest +1) += pArg[i];

et après avoir modifié la déclaration de Dest:
char Dest[1000];
Dest[t] = pArg[i];


===================
/* my.c "?name=me%20first&age=18" */
#include <stdio.h>

#pragma argsused
int main (int argc, char *argv[]){//

char *Dest;
char pArg[1000];
int i = 0;

while(argv[1][i] != '\0') {
pArg[i] = argv[1][i];
printf("%c ", argv[1][i]);
i++;
}
i = 0;
while( pArg[i] != '=' )
{
printf("while- %c\n", pArg[i]);
i++;
}
i++;
while( pArg[i] != '&' )
{
if( pArg[i] != '+' )
{
*(Dest +1) = pArg[i];
}
else
*(Dest +1) = ' ';

i++;
}

printf("end- %s\n", *Dest);

return 0;
}


--
Jean Pierre Daviau
--
http://jeanpierredaviau.com

2 réponses

Avatar
Fabien LE LEZ
On Sat, 26 Feb 2005 07:09:31 -0500, "Jean Pierre Daviau"
:

#include <stdio.h>

#pragma argsused
int main (int argc, char *argv[]){//

char *Dest;
char pArg[1000];


Erreur d'aiguillage. Soit tu programmes en C, et il faut poster sur
fr.comp.lang.c, soit tu programmes en C++, et il faut[*] utiliser
std::string (ou autre classe de chaîne).



[*] Bon, OK, on peut faire sans, de même qu'on peut programmer en
tournant le dos à l'écran.


--
;-)

Avatar
Pierre Maurette
Bonjour à tous,
[...]


/* my.c "?name=me%20first&age" */
fr.comp.lang.c

C'est du C même pas caché.
[...]

char *Dest;
Il faut initialiser ce pointeur. Par une fonction d'allocation, ou en le

remplaçant par un tableau comme vous le suggérez. Ce n'est pas
exactement équivaelnt.
[...]

if( pArg[i] != '+' )
{
*(Dest +1) = pArg[i];
}
else
*(Dest +1) = ' ';

i++;
}
Là, il faut certainement un truc du genre: *(Dest + j++) ou Dest[j++].

Mais ce n'était pas ça qui faisait planter.
Et terminer par un *(Dest + j) + '' ou Dest[j++] = '' si j'ai bien
lu votre code.

printf("end- %sn", *Dest);
Non.

printf("end- %sn", Dest);
--
Pierre