Appel systeme en programme C
Résolu
info_nadia
Messages postés
25
Statut
Membre
-
info-nadia -
info-nadia -
Bonjour,
j'ai un exercice qui demade de lire des fichiers passes en argument et ecrire leur contenu sur la sortie standard dans le meme ordre utilisant les appels systeme open() read() write() close().mais j'ai un problem lors de la compilation car plus l'affichage du contenu il m;affiche aussi des symboles bizzards SVP si vous pouvez me trouver l'erreur aue j'ai fait voici le code;
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define taille 20
int main (int argc,char *argv[]){
int fd;
int i=1;
char buf;
while (argv[i]!=NULL){
fd=open(argv[i],O_RDONLY);
if(read(fd,&buf,taille)>0) write (1,&buf,taille);
printf("\n");
close(fd);i++;
}
}
Merciiiiiiiiii d'avance.
j'ai un exercice qui demade de lire des fichiers passes en argument et ecrire leur contenu sur la sortie standard dans le meme ordre utilisant les appels systeme open() read() write() close().mais j'ai un problem lors de la compilation car plus l'affichage du contenu il m;affiche aussi des symboles bizzards SVP si vous pouvez me trouver l'erreur aue j'ai fait voici le code;
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define taille 20
int main (int argc,char *argv[]){
int fd;
int i=1;
char buf;
while (argv[i]!=NULL){
fd=open(argv[i],O_RDONLY);
if(read(fd,&buf,taille)>0) write (1,&buf,taille);
printf("\n");
close(fd);i++;
}
}
Merciiiiiiiiii d'avance.
2 réponses
-
while (argv[i]!=NULL) { fd=open(argv[i],O_RDONLY); if(fd<1) { printf("erreur lecture %s\n",argv[i]); continue; } printf("===> \\ fichier \"%s\" :\n",argv[i]); while((nb=read(fd,&buf,taille))>0) write (1,&buf,nb); printf("\n"); close(fd); i++; } -
salut, essai ça :
int nb; if((nb=read(fd,&byf,taille)>0)write(1,&buf,nb);
car taille n'est pas forcément la taille de ce qui est lu, du coup tu risque d'afficher des choses qui sont des "détritus".
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur