Prob C:Pq mon argc n'est pas pris en compte ?

Conatic -  
akkira Messages postés 24 Statut Membre -
/***************************************************************************/
/* AUTEUR: VAN WINNENDAELE Lionel
/* NOM: entete.c
/* DATE: 28-08-01
/* DESCRIPTION: Programme qui crée des entêtes
/***************************************************************************/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc , char *argv[]) {

/* Pourquoi l'instruction ci-dessous qui teste si le nombre de parametre est inferieur à 1 ne
s'execute pas ??? */

if (argc<1) printf("Il manque des arguments ......");
if (argv[1]==0) { printf("Il manque des arguments......"); return 0; }

FILE * ptr_file;

char auteur[30];
char nom[20];
char date[10];
char description[255];

//clrscr();
printf("\n****** Programme de création d'entête ******\n");

strcpy(auteur,"VAN WINNENDAELE Lionel");

printf("Nom du programme:");
gets(nom);

printf("Date:");
gets(date);

printf("Description:");
gets(description); // On prefere gets pour pouvoir utiliser des ' ' //
printf("\n");
printf("/****************************************************************************/");
printf("\n/* AUTEUR: %s\n/* NOM: %s\n/* DATE: %s\n/* DESCRIPTION: %s\n",auteur,nom,date,description);
printf("/****************************************************************************/");
getch();

if ((ptr_file=fopen ("c:\\temp\\intro.txt","w"))==NULL)
{
printf("\n***** Erreur lors de l'accès au fichier *****\n");
return 0;
}

fprintf(ptr_file,"/****************************************************************************************/");
fprintf(ptr_file,"\n/* AUTEUR: %s\n/* NOM: %s\n/* DATE: %s\n/* DESCRIPTION: %s\n",auteur,nom,date,description);
fprintf(ptr_file,"/****************************************************************************************/");
fprintf(ptr_file,"\n");

printf("\n\n >>>> Enregistrement effectué <<<< \n\n");
getch();
fclose(ptr_file);

char buff1[50];
strcpy(buff1,"copy c:\\temp\\intro.txt+");
strcat(buff1,argv[1]);
strcat(buff1," ");
strcat(buff1,"tempo.c");

system(buff1);
remove(argv[1]);
rename("tempo.c",argv[1]);

return 1;

}

4 réponses

jisisv Messages postés 3678 Statut Modérateur 935
 
Ceci devrait fonctionner:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc , char *argv[]) {

/* Pourquoi l'instruction ci-dessous qui teste si le nombre de parametre est inferieur à 1 ne
s'execute pas ??? */

if (argc<2) {printf("Il manque des arguments ......\n"); return 1;}

printf("Mon premier argument %s\n", argv[1]);
return 0;

}Il faut se rappeler que argv[0] pointe vers le nom du programme.
Johan
0
frederic levillain
 
en fait ton programme fonctionnait tres bien dès le depart.
un conseil : qd tu affiches des informations change le contenu afin de ne pas te retrouver avec de fausses erreurs (comme dans ton cas)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ( int argc , char *argv[] )
{

/* Pourquoi l'instruction ci-dessous qui teste si le nombre de parametre est inferieur à 1 ne
s'execute pas ???. */
/* -- en fait ça fonctionne parfaitement -- */

if ( argc < 1 ) /* -- je confirme ; ce test fonctionne correctement ;) -- */
printf( "Il manque des arguments (argc)......\n" );
if ( argv[1] == NULL ) /* -- etant donne que 'argv' est un tableau de pointeurs il vaut mieux tester s'il est a NULL plutot qu'egal a zero. ceci dit je ne vois pas a quoi peut te servir ce test si l'on test le nb d'arguments. -- */
{
printf("Il manque des arguments (argv)......\n");
return 0;
}
return 0;
}
0
William
 
Ca ne fait rien car argc est toujours > ou = a 1 (le nom de ton executable) dc ca sert a rien de faire
if (argc < 1) parce que ce sera tjs faux.
0
akkira Messages postés 24 Statut Membre
 
Il me semble même que il en contre 2 si le fichier porte une extension... à vérifier
Webmaster de l'Antre Cyberpunk
http://www.antrecyberpunk.be.tf
0