Bonjour,
N'étant pas spécialiste du C, je viens vers vous pour vérifier si je ne me suis pas gourré quelque part lors de la réalisation de ce tout petit programme, qui simule la sortie de l'outil vdfuse lorsque celui-ci travaille avec un fichier contenant plusieurs partitions.
(vdfuse est un outil pour "monter" dans le système de fichiers un fichier de disque virtuel).
Je pose cette question car j'ai besoin d'être sûr que la sortie de mon prog est correcte, le but final étant de récupérer cette sortie dans une IHM écrite en Lazarus et c'est là que ça coince...
Je vous laisse juger sur l'image ci-dessous où l'on voit à gauche la sortie dans une console de mon programme, et à droite la sortie récupérée par les composants Lazarus lorsque mon programme est lancé depuis l'IHM : on voit bien qu'il en manque un bout (les lignes "-- Executing" et "Terminé" font partie de l'IHM)...
Vous allez sans doute me demander pourquoi je mets toutes les lignes générées dans une seule grande ligne : c'est pour voir comment le bazar se comporte car, si je ne fais pas ça et que je demande à Lazarus de récupérer ligne à ligne, c'est à ce niveau qu'il en manque.
Je pensais qu'en mettant tout dans une "grande ligne" je m'affranchirais du souci, mais que nenni...
Bref, assez parlé, voilà le code :
Merci de vos retours et commentaires,
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
22
23
24
25
26
27
28
29
30
31
32
33
34 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv) { char partname[12]; char alineofdatas[20]; char cumulatedatas[200]; int type; int i; // init for (i = 0; i < 12; i++) {partname[i] = '\0';} for (i = 0; i < 20; i++) {alineofdatas[i] = '\0';} for (i = 0; i < 200; i++) {cumulatedatas[i] = '\0';} type = 129; // job for (i = 1; i < 9; i++) { sprintf(partname, "Partition%d", i); //génère un nom de partoche sprintf(alineofdatas, "%s 0x%02x \n", partname, type+i); //génère la ligne printf("%s", alineofdatas); // contrôle strcat(cumulatedatas, alineofdatas); // sauve la ligne } // result puts("dessus = ligne à ligne dans la boucle, dessous = une seule ligne après la boucle"); fprintf(stdout, "%s", cumulatedatas); fflush(NULL); return 0; }
PS : pour la compilation, j'ai fait au plus simple : écrit avec Geany, je me suis contenté de faire F9,
Partager