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)...

Nom : 2partmissing.png
Affichages : 137
Taille : 51,9 Ko

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 :

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;
}
Merci de vos retours et commentaires,

PS : pour la compilation, j'ai fait au plus simple : écrit avec Geany, je me suis contenté de faire F9,