IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

creer et ecrire dans un fichier


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Par défaut creer et ecrire dans un fichier
    Bonjour,

    Je voudrais bien ecrire un programme en C en utilisant les appels systeme Linux qui permet de créer un fichier (avec extension que je choisit moi-meme) et d'écrire dedans.

    Y'a t-il quelqu'un qui peut m'aider sur ça?
    Merci d'avance.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par CANADG Voir le message
    Y'a t-il quelqu'un qui peut m'aider sur ça?
    bien sûr :

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,


    bien sûr :
    Bonjour,
    Merci pour ton retour de message .
    Mon problème c'est que j'ai utilisé ces fonctions pour copier un fichier mais j'arrive pas à le faire pour créer un fichier .txt contenant des infos sur un fichier en entrée ( une sorte d'archive).
    Par exemple au lieu d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%o",fileStat.st_mode);
    pour afficher sur la console le mode d'un fichier en entrée , je veux que cette information( le mode d'un fichier en entrée) soit affichée dans le fichier qui va être crée .

    Et aussi je sais pas comment faire pour que le fichier crée ait une extension .txt ou n'importe quelle extension que je choisis à l'avance.
    Merci d'avance.

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut


    bon, reprenons doucement, si tu étais allé lire les liens que je t'ai donné tu aurais possiblement déjà ta réponse :
    • la fonction open() sert à ouvrir ET à créer des fichiers
    • la fonction read() sert à lire les octets contenus dans le fichier
    • la fonction write() sert à écrire dans le fichier
    • la fonction close() sert à fermer le descripteur du fichier quand on a fini de travailler avec


    ces quatre fonctions correspondent aux appels systèmes basiques pour manipuler les fichiers (ce que tu souhaitais dans ton premier post donc)

    printf() n'est ni un appel système ni une fonction pour écrire dans un fichier, on pourrait envisager d'utiliser fprintf() mais ce n'est pas là non plus un appel système, c'est une fonction de la libc

    à moins de faire des mélanges dans ton code en mixant des fonctions de la libc (comme sprintf() par exemple) et les appels systèmes (en l'occurrence write()) tu n'as pas moyen d'écrire dans un fichier à l'aide d'une chaine de formatage (le fameux "%o\n"), c'est une facilité fournie par la libc ! tu seras donc obligé d'écrire ton nombre octal par d'autres moyens, en créant une fonction pour convertir explicitement ton nombre en une chaine de caractères qui le représente (char * convertirOctal(int num) ?)

    enfin acté qu'ici il s'agit plus d'un problème de compréhension du langage que réellement d'une problématique liée à la programmation système, je t'invites à poster dans la section Langage C / Débutant comme pour ton autre discussion la prochaine fois (c'est un détail)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Par défaut
    Je crois qu'à la fin de vais faire un mélange entre des fonctions dela libc et les appels systemes comme vous me l'avez conseillé ... mais le probleme c'est que lors de l'ecriture dans le fichier crée j'arrive à écrire le contenu du fichier du depart (le texte qu'il contient),mais ce que je veux c'est que le fichier crée contient ,à part le contenu du fichier du depart, des infos sur ce fichier( de depart) exemple si je fais ça :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    struct stat fileStat;                       
    		if(stat(source_name,&fileStat) < 0){
    			perror("error opening the file");
    			return 1;
    		   }                                                        
                         int is_directory = 0;
    		     int is_symlink = 0;
     
    		     // Show the type of file
    		     switch (fileStat.st_mode & S_IFMT) {
    			case S_IFBLK:  printf("block device\n");		break;
    			case S_IFCHR:  printf("character device\n");		break;
    			case S_IFDIR:  printf("d\t");			is_directory = 1;	break;
    			case S_IFIFO:  printf("FIFO/pipe\n");			break;
    			case S_IFLNK:  printf("l\t");			is_symlink = 1;		break;
    			case S_IFREG:  printf("f\n");		break;
                            case S_IFREG:  printf("f");           break;
    			case S_IFSOCK: printf("socket\n");			break;
    			default:       printf("unknown?\n");			break;
     
    		        }

    ce code m'affiche le type du fichier .Je veux que le resultat s'affiche dans le fichier crée au debut au lieu que ça soit sur la console .

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par CANADG Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    struct stat fileStat;                       
    		if(stat(source_name,&fileStat) < 0){
    			perror("error opening the file");
    			return 1;
    		   }                                                        
                         int is_directory = 0;
    		     int is_symlink = 0;
     
    		     // Show the type of file
    		     switch (fileStat.st_mode & S_IFMT) {
    			case S_IFBLK:  printf("block device\n");		break;
    			case S_IFCHR:  printf("character device\n");		break;
    			case S_IFDIR:  printf("d\t");			is_directory = 1;	break;
    			case S_IFIFO:  printf("FIFO/pipe\n");			break;
    			case S_IFLNK:  printf("l\t");			is_symlink = 1;		break;
    			case S_IFREG:  printf("f\n");		break;
                            case S_IFREG:  printf("f");           break;
    			case S_IFSOCK: printf("socket\n");			break;
    			default:       printf("unknown?\n");			break;
     
    		        }
    ce code m'affiche le type du fichier .Je veux que le resultat s'affiche dans le fichier crée au debut au lieu que ça soit sur la console .
    au risque de me répéter printf() ne sert pas à écrire dans un fichier, si tu utilises les appels systèmes c'est write() qu'il faut utiliser, as-tu seulement essayé ?

Discussions similaires

  1. Creer/Ecrire dans un fichier sur un reseau
    Par Psykotik dans le forum MFC
    Réponses: 8
    Dernier message: 03/01/2006, 10h01
  2. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  3. Ecrire dans un fichier
    Par gibet_b dans le forum Linux
    Réponses: 5
    Dernier message: 25/04/2005, 20h11
  4. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo