Passer les parametres dans mes commandes c
Parfait le neophite
-
loupius -
loupius -
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>
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:
- Passer les parametres dans mes commandes c
- Invite de commandes - Guide
- Parametres de mon ordinateur - Guide
- Paramètres dns - Guide
- Commandes terminal mac - Guide
- Passer de qwerty a azerty - Guide
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];
.
tu fais
if (argc==2)
argc contient le nombre de paramètre, donc ici 2
et plus loin :
la_chaine_resultat=argv[3];
.
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.
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.