Compiler sous ubuntu

Fermé
batman19 - 4 mai 2010 à 01:26
c_amigo Messages postés 5 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 30 novembre 2010 - 27 août 2010 à 02:40
bonjour jé u dé problem lor de l'exécution de ce program main

#include<stdio.h>
#include"somme.h"
#include"produit.h"
main (int argc, char *argv[ ])
{
int a;
if(argv[1]==1)
{ a=somme(argv[2],argv[3]);
printf("operation somme demandée le resultat est %d ",a);
}
else if(argv[1]==2)
{ a=produit(argv[2],argv[3]);
printf("operation produit demandée le resultat est %d",a);
}
else
printf("erreur");
}

msg affiché:

main.c:4: error: stray `\302' in program
main.c:4: error: stray `\240' in program
merci d'avance pou votr aide
A voir également:

5 réponses

Franzux Messages postés 8907 Date d'inscription mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
4 mai 2010 à 08:06
CÇM est un forum, pas un clavier de téléphone portable. En conséquence, tu n'obtiendras de réponse à ta question qu'en usant d'un vocabulaire adapté et d'une orthographe correcte. Ainsi que le disait le poète : "Ce qui se conçoit bien s'énonce clairement" (Nicolas Boileau). Ton message n'étant pas convenablement rédigé, cela nuit gravement à la situation de communication nécessaire à l'utilisation d'un forum. En conséquence, tu es prié de bien vouloir reformuler ce message de façon plus correcte. Pour plus d'informations, n'hésite pas à consulter l'article du règlement concernant l'écriture sur CÇM. Merci de ta compréhension.

Cordialement,

Franz.
4
ok désolé pour le dernier message,en fait c'est la première fois que je pose une question dans un forum et honnêtement je n'ai pas consulté l'article du règlement.Malheureusement, je me suis habitué à utiliser ce langage , mais quand même c'est pas une raison pour rédiger de cette façon...veuillez m'excusez encore et voilà mon message reformulé :


bonjour ,
j'ai eu des problèmes lors de l'exécution de ce programme main:

#include<stdio.h>
#include"somme.h"
#include"produit.h"
main (int argc, char *argv[ ])
{
int a;
if(argv[1]==1)
{ a=somme(argv[2],argv[3]);
printf("operation somme demandée le resultat est %d ",a);
}
else if(argv[1]==2)
{ a=produit(argv[2],argv[3]);
printf("operation produit demandée le resultat est %d",a);
}
else
printf("erreur");
}

message d'erreur affiché:

main.c:4: error: stray '\302' in program
main.c:4: error: stray '\240' in program


merci d'avance pour votre aide
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
4 mai 2010 à 11:25
Salut,

Tu devrais utiliser le type int pour main
Je vois dans ton code que tu comparres une chaîne de caractère avec un integer.
Mes ces erreurs ne viennent pas de là.
Je pense qu'il y a des caractères non imprimables dans ton code

Affiche le résultat de
perl -pe 's/(.)/"$1=" .  ord($1)/eg' ton_fichier.c

0
Salut,

Merci bien pour ta réponse ,en fait ta remarque est très importante; on ne peut pas comparer un caractère à un entier.J'ai trouvé 90% de la solution et j'ai utilisé la fonction"atoi" de<stdlib.h> permettant de convertir un caractère à un entier.Mais toujours le même message s'affiche :

main.c:5: error: stray '\302' in program
Donc je pense qu'il s'agit d'un problème de compilation (ligne 5)




#include<stdio.h>
#include<stdlib.h>
#include"somme.h"
#include"produit.h"
void main (int argc, char*argv[])
{
int a;
char* arg1,arg2,arg3;
arg1=argv[1];
arg2=argv[2];
arg3=argv[3];

if(atoi(arg1)==1)
{ a=somme(atoi(arg2),atoi(arg3));
printf("operation somme demandée le resultat est %d ",a);
}
else if (atoi(arg1)==2)
{ a=produit(atoi(arg2),atoi(arg3));
printf("operation produit demandée le resultat est %d",a);
}
else
printf("erreur");
}
Et je veux comprendre cette ligne de commande s'il vous plait

perl -pe 's/(.)/"$1=" . ord($1)/eg' ton_fichier.c

Merci bien pour votre aide
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
5 mai 2010 à 18:34
Salut,

Et je veux comprendre cette ligne de commande s'il vous plait

Et moi je veux que tu ouvres une console et que tu tapes la commande ensuite tu affiches le résultat.
La commande me permet de voir ce que tu as comme caractères dans ton fichiers.
0
root@ubuntu-vm:~/Desktop/src# perl -pe 's/(.)/"$1=" . ord($1)/eg' main.c'
>
voilà le résultat ,rien n'est affiché !
0
Bonjour,

Une autre commande (Linux) permettant d'afficher les caractères non-imprimables , cause de ton problème ici, est "od -c MON_FICHIER".

La sortie de cette commande n'est pas très lisible, mais tu verras exactement les caractères que contient ton fichier, et tu te rendras compte qu'il contient les fameux caractères \302 et \240, qui ne sont pas imprimables, n'apparaissent donc pas à l'écran, mais te pourrissent ta syntaxe et t'empêchent de compiler.

M'est avis que tu vas trouver ces caractères juste après le crochet ouvrant de la ligne 4 "argv[ ". En effet, ces caractères sont insérés par la combinaison de touche [AltGr] + Espace. Donc si tu n'as pas relâché la touche [AltGr] au moment où tu as inséré l'espace entre les deux crochets à la ligne 4, tu auras inséré ces ennuyeux caractères invisibles.

Solution = effacer la ligne, et la réécrire en faisant bien attention à ce problème (pas de copier-coller, qui copie-collera ces caractères, et ne résoudra donc rien).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
c_amigo Messages postés 5 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 30 novembre 2010
27 août 2010 à 02:40
Merci bien pour votre aide Philou
0