Appel systeme en programme C

Résolu
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

  1. Contributeur
    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. ca marcheee mille merciiiiiiiiiiiiiiiiiiiiiiiii c gentil
  2. Contributeur
    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
    1. il m;affiche que le 1ere caractere de chaque fichier
    2. Contributeur
      il faut que tu fasses une boucle sur le read avec comme condition de sortie la fin du fichier.