Appel systeme en programme C

Résolu
info_nadia Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
 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.

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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++;
} 
1
info-nadia
 
ca marcheee mille merciiiiiiiiiiiiiiiiiiiiiiiii c gentil
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
0
info_nadia Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
il m;affiche que le 1ere caractere de chaque fichier
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
il faut que tu fasses une boucle sur le read avec comme condition de sortie la fin du fichier.
0