Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/11/2021, à 10:53

Astrolivier

[résolu]incrémenter des noms de fichier en C

Bonjour,

Je commence le programmation en C et j'ai une question dont je ne trouve pas de réponse claire

est-il possible, et comment faire, pour lire, écrire ou créer des fichiers dans une boucle de type for (par exemple)

exemple de code d'un exercice que j'ai fait
voici une fonction de lecture de fichier :

void lectureResultats(char *s[10][4]){
    FILE* Lecture = NULL;
    Lecture = fopen("Resultat1.txt","r");

    char motTemp[TAILLEMAX];

    int i, j;
    for (i=0;i<10;i++){
        for (j=0;j<4;j++) {
            fscanf(Lecture,"%s",motTemp);
            s[i][j]= malloc(sizeof(motTemp));
            strcpy(s[i][j], motTemp);
        }
       // printf("%s %s %s %s\n", s[i][0], s[i][1], s[i][2], s[i][3]);
    }
    fclose(Lecture);
}

ici je lis 1 fichier
comment faire pour lire une série de fichier tel que Resultat1.txt, Resultat2.txt, Resultat3.txt ......
sans taper le nom de fichier à chaque fois.

genre (j'imagine que ce code n'est pas bon mais pour le principe)

void lectureResultats(char *s[10][4]){

   int k;
 for (k=0;k<10;k++){

    FILE* Lecture = NULL;
    Lecture = fopen("Resultat"k".txt","r");

    char motTemp[TAILLEMAX];

    int i, j;
    for (i=0;i<10;i++){
        for (j=0;j<4;j++) {
            fscanf(Lecture,"%s",motTemp);
            s"k"[i][j]= malloc(sizeof(motTemp));
            strcpy(s[i][j], motTemp);
        }
       // printf("%s %s %s %s\n", s[i][0], s[i][1], s[i][2], s[i][3]);
    }
    fclose(Lecture);
}
}

afin de lire une série de fichiers comment écrire ce "k" ?

on doit pouvoir lire un dossier avec dirent, mais je suis surtout intéressé par une syntaxe qui insère une incrémentation au sein du nom de fichier (ou autre d'ailleurs), et en C.

Dernière modification par Astrolivier (Le 22/11/2021, à 19:46)


S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)

Hors ligne

#2 Le 15/11/2021, à 11:36

hotnuma

Re : [résolu]incrémenter des noms de fichier en C

Un truc dans ce style là :

#include <stdio.h>

#define MAXSIZE 255

int main()
{
    setbuf(stdout, NULL);

    char fname[MAXSIZE];

    for (int k = 0; k < 10; ++k)
    {
        if (snprintf(fname, MAXSIZE, "myfile%d.txt", k) >= MAXSIZE)
        {
            printf("buffer overflow\n");
            return 1;
        }

        printf("%s\n", fname);
    }

    return 0;
}

https://linux.die.net/man/3/snprintf


Xubuntu 21.04 - GitHub

Hors ligne

#3 Le 16/11/2021, à 20:42

Astrolivier

Re : [résolu]incrémenter des noms de fichier en C

bien possible. ce soir j'ai pas trop le temps de tester du code, mais je reviens dire tout le bien que j'en pense dès que possible.
merci beaucoup !


S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)

Hors ligne