Appel systeme en programme C

Résolu/Fermé
info_nadia Messages postés 15 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 9 mai 2012 - 4 nov. 2011 à 14:19
 info-nadia - 4 nov. 2011 à 17:01
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
4 nov. 2011 à 15:47
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
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
Modifié par Char Snipeur le 4/11/2011 à 14:35
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 vendredi 4 novembre 2011 Statut Membre Dernière intervention 9 mai 2012
4 nov. 2011 à 14:51
il m;affiche que le 1ere caractere de chaque fichier
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
4 nov. 2011 à 15:41
il faut que tu fasses une boucle sur le read avec comme condition de sortie la fin du fichier.
0