Erreur de compilation : expected expression before ‘%’ token

Erreur de compilation : expected expression before ‘%’ token - C - Programmation

Marsh Posté le 08-03-2013 à 20:54:49    

Hello.
J'ai un probléme de compilation que j'arrive pas à résoudre.

Code :
  1. mikael@Zeus:~/projects/one command$ gcc osh.c
  2. osh.c: In function ‘main’:
  3. osh.c:5:9: attention : initialization makes integer from pointer without a cast [enabled by default]
  4. osh.c:7:5: erreur: expected expression before ‘%’ token
  5. osh.c:9:10: erreur: expected expression before ‘%’ token
  6. mikael@Zeus:~/projects/one command$ gcc osh.c


Voici mon code source :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. main()
  4. {
  5. int i = "0";
  6. scanf("%d", &i);
  7. if %d = "ping"
  8.     printf("ping not available on this program" );
  9. else if %d = "v"
  10.     printf("osh 1.1" );
  11. else
  12.     printf("Command not found. Exiting program." );
  13. return 0;
  14. }


Pourriez vous me dire d'ou vient le probléme ?
Merci


---------------
Windows 8: Designed to fail
Reply

Marsh Posté le 08-03-2013 à 20:54:49   

Reply

Marsh Posté le 08-03-2013 à 21:23:38    

Heu, es-tu sûr que tu voulais poster ton message dans la catégorie [C] ? parce que ton "code" ne veut pas dire grand chose dans ce langage: la syntaxe de ton "if" est complètement fausse et l'initialisation de la variable "i", bien que permissible, n'est sans doute pas ce que tu voulais faire. D'où question: qu'est-ce que ce programme est sensé faire ?
 

chatonmeow a écrit :


Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. main()
  4. {
  5. int i = "0";
  6. scanf("%d", &i);
  7. if %d = "ping"
  8.    printf("ping not available on this program" );
  9. else if %d = "v"
  10.    printf("osh 1.1" );
  11. else
  12.    printf("Command not found. Exiting program." );
  13. return 0;
  14. }




Message édité par tpierron le 08-03-2013 à 21:27:32
Reply

Marsh Posté le 08-03-2013 à 21:29:53    

je pensais que les if étaient juste, car je me suis justement basé sur une documentation C
je compte faire un programme qui répond selon le texte entré ;)


---------------
Windows 8: Designed to fail
Reply

Marsh Posté le 08-03-2013 à 22:30:59    

chatonmeow a écrit :

je pensais que les if étaient juste, car je me suis justement basé sur une documentation C
je compte faire un programme qui répond selon le texte entré ;)


 
Je ne sais pas quelle documentation tu as utilisé, mais je te conseille de la mettre de coté... J'ai encore un peu de mal à voir ce que tu voulais, mais à priori, je dirais plutôt un truc du genre:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6.     char msg[256];
  7.     fgets(msg, sizeof msg, stdin);
  8.     if (strncmp(msg, "ping", 4) == 0)
  9.         printf("ping not available on this program" );
  10.     else if (strncmp(msg, "v", 1) == 0)
  11.         printf("osh 1.1" );
  12.     else
  13.         printf("Command not found. Exiting program." );
  14.     return 0;
  15. }


 
Le code n'est pas très robuste, cela dit. Une meilleure façon de faire serait d'extraire les mots de la saisie de l'utilisateur et de faire une comparaison à partir de là, mais ça va être déjà de belle tartine de code. D'où l'intérêt peut-être d'aller voir des langages d'un peu plus haut niveau...

Reply

Marsh Posté le 08-03-2013 à 23:28:20    

Je te remercie ! Ca fonctionne. La documentation devait être assez vieille ou fausse alors ;)


---------------
Windows 8: Designed to fail
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed