Bonjour à tous,

Je dois optimisez un programme en C. Mon programme s'exécute sous unix sous la forme suivante:
./monprogramme < fichierEntree > fichierSortie

Exemple de fichier d'entrée:
10
25
100
0

Exemple de fichier de sortie:
1
4
16

J'ai choisi de lire le fichier avec la fonction fgets et d'écrire avec la fonction write (je suis obligé d'écrire avec la fonction write).

Attention les fichiers d'entrée et sortie étant insérés comme des flux, il n'y a donc pas d'ouverture de fichier.

Lecture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
while (n != 0)
	{
		fgets(line, sizeof line, stdin); // lecture de toute un ligne 
		sscanf(line, "%d", &n); // on stock la ligne dans un entier
		if (n == 0) break; // Sortir sans faire le calcul pour n = 0  
 
		clean(line); // On vide le buffer de fgets 
		Cal(); 
	};
Après vérification la variable n se remplit correctement.

Dans la fonction Cal se trouve un entier que j'aimerais écrire.

Ecriture

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
int tri;
           // calcul de tri
           write(1, &tri, sizeof tri);
En revanche, aucune écriture ne se réalise.

Merci infiniment, je n'ai plus d'idée, j'ai l'impression d'avoir tout essayé...