Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Profil pro
    Inscrit en
    juillet 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : juillet 2012
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Tester si un fichier est vide

    Bonjour à tous,

    Je suis amylton, nouveau sur ce site et je compte contribué au langage C en proposant des codes sources tant simple que complexe. Pour résumer, étant débutant en langage C, j'ai décidé, au lieu de chercher des exemples de projets à réaliser qui me prendraient tout mon temps, de faire un site qui regroupe des programmes en C que j'ai réalisé(le lien est ici http://codeplus.e-monsite.com/).

    Pour commencer, un petit programme qui teste si un fichier est vide.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int testSiFichierVide(FILE* fichier)
    {
        int caracterePremier = 0;
     
        //On lit le prmeier caractère du fichier
        caracterePremier = fgetc(fichier);
        if(caracterePremier==EOF)
        {
            return 1;//le fichier est vide donc on retourne 1
        }
        return 0;//le fichier n'est pas vide donc on retourne 0
    }
     
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
     
        fichier = fopen("test.txt", "r");
     
        if (fichier != NULL)
        {
            if(testSiFichierVide(fichier)==1)
            {
                printf("Le fichier est vide");
            }
            else
            {
                printf("Le fichier n'est pas vide");
            }
            fclose(fichier);
        }
        else
        {
            // On affiche un message d'erreur si on veut
            printf("Impossible d'ouvrir le fichier test.txt");
        }
     
        return 0;
    }
    Qu'en pensez-vous?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 316
    Points : 12 319
    Points
    12 319

    Par défaut

    Bonjour et bienvenue,

    Sans vouloir tuer une vocation dans l'œuf, cette méthode a l'intérêt de se cantonner au C standard strict, mais est peu efficace à l'usage et surtout, elle risque d'engendrer beaucoup d'effets de bord. Il vaut mieux, dans ce cas, faire de la programmation système en utilisant les fonctions de son O.S.

    On en discutait notamment ici : http://www.developpez.net/forums/d64...-fichier-vide/

    Bon courage pour la suite.

  3. #3
    Modérateur
    Avatar de Bktero
    Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 2 635
    Points : 6 355
    Points
    6 355

    Par défaut

    Salut !

    L'idée est bonne quand on débute : faire des petites fonctions simples mais efficaces pour se construire une "bibliothèque" pour ses futurs programmes et pour s'entrainer. Sauf que souvent quand on commence (et même après en fait...), pas facile de faire des codes robustes, portables et complets. J'ai regardé un peu ton site, on voit des choses que font les débutants (comme des scanf pour récupérer les choix des utilisateurs : pratique et simple mais pas du tout robuste). N'hésite pas avec le temps à compléter et modifier tes sources et demander des conseils.

    Bon courage
    Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

    Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

    Pour vos problèmes d'embarqué, utilisez le forum dédié !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •