Passer les parametres dans mes commandes c

Fermé
Parfait le neophite - 26 oct. 2009 à 13:02
 loupius - 27 oct. 2009 à 02:31
Bonjour,

j ai un probleme de passage d arguments d une commande que je programme en C

apres mon makefile , j ai un message me disant que j ai " empty character constant". sur ce code ci apres:


int compteur_de_colonne;

int
main(int argc,char **argv)

{
int col_depart=0;
int col_final=0;

char * la_chaine_resultat=NULL;


if (argc==2)
{
col_depart=atoi(argv[1]);
col_final=atoi(argv[2]);
compteur_de_colonne=0;
la_chaine_resultat=argv[3];

while(compteur_de_colonne<col_final)
{

compteur_de_colonne=col_depart;

la_chaine_resultat[compteur_de_colonne++] ='';//error: empty character constant


if ( compteur_de_colonne<col_final )
{
la_chaine_resultat[compteur_de_colonne++]='';
}
else if(la_chaine_resultat[compteur_de_colonne]!=EOF)
{
*(la_chaine_resultat+compteur_de_colonne) =argv[3][compteur_de_colonne++];//erreur: operation on ‘compteur_de_colonne’ may be undefine
}


</ital>
A voir également:

3 réponses

Salut,

tu fais
if (argc==2)

argc contient le nombre de paramètre, donc ici 2

et plus loin :

la_chaine_resultat=argv[3];

.
0
Pacorabanix
26 oct. 2009 à 20:33
mais ceci devrait donner une erreur à l'exécution, pas à la compilation, non ?
0
Pour répondre à Pacorabanix: oui, tu as raison l'erreur ne devrait pas être à la compilation... mais elle ne l'est pas; en effet l'erreur signalée par francis, n'apparait pas à la compilation.

Les concepteurs de compilateurs font un travail formidable pour imaginer et concevoir un outil permettant de mener à bien cette délicate phase de compilation et je peux vous garantir que ce n'est pas de la tarte ! C'est d'une telle complexité qu'il est fort probable que jamais de votre vie vous ne mettiez le nez dans un programme aussi complexe !
Tout cela pour vous dire que lorsque le compilateur vous fait une remarque, la moindre des choses est d'essayer de la comprendre; bon d'accord, c'est en anglais... mais trois mots, ce n'est quand même pas le diable à traduire.
empty character constant signifie en mot à mot: caractère constant vide.
Et le compilateur a raison: tu lui dis d'attribuer la valeur du caractère ''... et ce caractère est vide... et un caractère vide c'est quel caractère ??? Je ne sais pas et le compilateur non plus.
Alors mets un 'a', un 'b' ou autre, même l'espace est autorisé. Au cas où tu voudrais mettre le caractère nul, il te faudra mettre '\0'.
Et souvient toi que le compilateur a toujours raison, enfin presque, mais les cas où il déraille sont très très très rare.
Bonne continuation.
0