Programme en c pour la commande nl
waldner77
Messages postés
183
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
j'ai réaliser un programme en langage si qui fait la commande nl mais le soucie c'est qu'il inscrit les chiffres au niveau d'une ligne qui ne comporte pas de caractère voici mon code:
#include <stdio.h>
#include <stdlib.h>
/* cat : concatene des fichiers, version 1 */
int main(int argc, char *argv[])
{
FILE *fp;
void copierfich(FILE *, FILE *);
if (argc == 1) /* pas d'args : copie l'entree standard */
copierfich(stdin, stdout);
else
while (--argc > 0)
if ((fp = fopen(*++argv, "r")) == NULL) {
printf("cat : impossible d'ouvrir %s\n", *argv);
return 1;
} else {
copierfich(fp, stdout);
fclose(fp);
}
return 0;
}
/* copierfich : copie le fichier fpe dans le fichier fps */
void copierfich(FILE *fpe, FILE *fps)
{
char c ;
short ligne = 0;
int deb =1;
while ((c = getc(fpe)) != EOF){
if(deb){
printf("%6d ",++ligne);
deb = 0;
}
putchar(c);
if( c == '\n'){ deb = 1;}
}
putchar(EOF);
}
j'ai réaliser un programme en langage si qui fait la commande nl mais le soucie c'est qu'il inscrit les chiffres au niveau d'une ligne qui ne comporte pas de caractère voici mon code:
#include <stdio.h>
#include <stdlib.h>
/* cat : concatene des fichiers, version 1 */
int main(int argc, char *argv[])
{
FILE *fp;
void copierfich(FILE *, FILE *);
if (argc == 1) /* pas d'args : copie l'entree standard */
copierfich(stdin, stdout);
else
while (--argc > 0)
if ((fp = fopen(*++argv, "r")) == NULL) {
printf("cat : impossible d'ouvrir %s\n", *argv);
return 1;
} else {
copierfich(fp, stdout);
fclose(fp);
}
return 0;
}
/* copierfich : copie le fichier fpe dans le fichier fps */
void copierfich(FILE *fpe, FILE *fps)
{
char c ;
short ligne = 0;
int deb =1;
while ((c = getc(fpe)) != EOF){
if(deb){
printf("%6d ",++ligne);
deb = 0;
}
putchar(c);
if( c == '\n'){ deb = 1;}
}
putchar(EOF);
}
A voir également:
- Programme en c pour la commande nl
- Invite de commande - Guide
- Commande terminal mac - Guide
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Commande dism - Guide
1 réponse
Salut,
Je n'ai faut que reprendre ton code. En gras les mofifications
Je n'ai faut que reprendre ton code. En gras les mofifications
#include <stdio.h> #include <stdlib.h> void copierfich(FILE *, FILE *); /* cat : concatene des fichiers, version 1 */ int main(int argc, char *argv[]) { FILE *fp; if (argc == 1) /* pas d'args : copie l'entree standard */ copierfich(stdin, stdout); else while (--argc > 0) if ((fp = fopen(*++argv, "r")) == NULL) { printf("cat : impossible d'ouvrir %s\n", *argv); return 1; } else { copierfich(fp, stdout); fclose(fp); } return 0; } /* copierfich : copie le fichier fpe dans le fichier fps */ void copierfich(FILE *fpe, FILE *fps){ char c ; short ligne = 0; int deb =1; int nbc=0; while ((c = getc(fpe)) != EOF){ ++nbc; if(nbc==1 && c=='\n') ; else if(deb){ printf("%6d ",++ligne); deb = 0; } putchar(c); if( c == '\n'){ deb = 1;nbc=0;} } //putchar(EOF); }