Ouverture de fichier sous windows

Ouverture de fichier sous windows - C - Programmation

Marsh Posté le 30-01-2006 à 01:02:32    

Bonjour.
 
Ayant parié avec un ami que j'arriverai a coder sous windows comme on peux le faire sous macos ou linux avec "juste" les cmd msdos et en tapant "gcc filename.c" je me suis lancé dans cette aventure.
 
bref voila que j'ai tt installé, emacs etc.... ca fait zarb sous windows je vous l'accorde, gcc aussi est installé, les lib et autre include aussi, bref j'ai voulu faire un programme tout simple que voici :
 

Code :
  1. #include <stdio.h>
  2. int main(int argc, char **argv)
  3. {
  4.   FILE *file = NULL;
  5.   int i = 0;
  6.   int j = 0;
  7.   if (argc != 2)
  8.     {
  9.       printf("You forgot the file !!!\n" );
  10.       return 1;
  11.     }
  12.   else
  13.     {
  14.       printf("plop\n" );
  15.       printf("argv[1]: %s\n", argv[1]);
  16.       if ((file = fopen(argv[1], "rb" )) == NULL)
  17. {
  18.   printf("Can't open the file !\n" );
  19.   return 2;
  20. }
  21.       fscanf(file, "< %d %d >", i, j);
  22.       printf("Valeur de i: %d\n", i);
  23.       printf("Valeur de j: %d\n", j);
  24.       close(file);
  25.     }
  26.   return 0;
  27. }


 
Mon probleme est qu'a l'execution du prog, windows m'affiche le message comme quoi l'appli a rencontré un pb est doit fermé.
Et ce juste au niveau de mon fopen (le printf au dessus s'affiche).
Bref je voulais donc savoir si sous windows il y avai un probleme a passer un argv de la sorte dans un fopen... faut il le chemin complet pour qu cela marche....... ca me parait tout de meme bizzard :D
 
Donc si vous avez une idée je suis preneur, au pire j'aurai perdu un pari, mais c'est pas grave et au mieux ca aura enrichie ma culture en programmation :D
 
Merci d'avance !
 
EDIT: desole ca ne marcher pas en fait a cause des '&' oublier devant 'i' et 'j' dans fscanf....
par contre aucun message d'erreur lors de la compilation ....

Message cité 1 fois
Message édité par StrAbZ le 30-01-2006 à 01:05:10
Reply

Marsh Posté le 30-01-2006 à 01:02:32   

Reply

Marsh Posté le 30-01-2006 à 08:32:29    

StrAbZ a écrit :

j'ai voulu faire un programme tout simple que voici :



Compiling: main.c
main.c: In function `main':
main.c:23: warning: format argument is not a pointer (arg 3)
main.c:23: warning: format argument is not a pointer (arg 4)
main.c:26: error: implicit declaration of function `close'
main.c:26: warning: nested extern declaration of `close'
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 3 warnings


Evidemment, il faut apprendre à regler correctement son compilateur... Au minimumm :  

-Wall -Wextra (ou -W si trop ancien) -O2


Remarques et corrections...


#include <stdio.h>
 
int main(int argc, char **argv)
{
   FILE *file = NULL;
   int i = 0;
   int j = 0;
 
   if (argc != 2)
   {
      printf("You forgot the file !!!\n" );
      return 1;
   }
   else
   {
      printf("plop\n" );
      printf("argv[1]: %s\n", argv[1]);
      if ((file = fopen(argv[1], "rb" )) == NULL)
      {
         printf("Can't open the file !\n" );
         return 2;
      }
/* -ed-
      fscanf(file, "< %d %d >", i, j);
pas du C...
*/
      fscanf(file, "< %d %d >", &i, &j);
 
      printf("Valeur de i: %d\n", i);
      printf("Valeur de j: %d\n", j);
/* -ed-
      close(file);
pas du C...
*/
      fclose(file);
 
   }
   return 0;
}


Message édité par Emmanuel Delahaye le 30-01-2006 à 08:35:24

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 30-01-2006 à 08:47:42    

Code :
  1. if (argc != 2)
  2.    {
  3.       printf("You forgot the file !!!\n" );
  4.       return 1;
  5.    }
  6.    else
  7.    {


 
je m'eleve contre ce else a l'inutilité patente qui ne sert qu'a embrumer l'esprit et a obscurcir la raison

Reply

Marsh Posté le 02-02-2006 à 03:34:41    

ouaip, d'accord pour le else... j'aurai du le voir ^^
 
quand au close c'est une faute de frappe de ma part.
 
par contre pour les flags j'ai compiler avec -W -Werror, ce qui qurai du me peter a la gueule... d'ou ma surprise sur le fait que je n'ai pas eu de message d'erreur.
 
malgres tt pb regle, merci quand meme ;)

Message cité 1 fois
Message édité par StrAbZ le 02-02-2006 à 03:36:11
Reply

Marsh Posté le 02-02-2006 à 08:54:14    

StrAbZ a écrit :

par contre pour les flags j'ai compiler avec -W -Werror,


Comme déjà expliqué, insuffisant.
 
-Wall -Wextra -O2
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

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