7.4.4 Exécution du programme

Voilà le résultat :

./test 
________/\\\\\\\\\__________________/\\\\\_____/\\\___/\\\\\\\\\\\\\\\___/\\\\\\\\\\\\\\\_        
 _____/\\\////////__________________\/\\\\\\___\/\\\__\/\\\///////////___\///////\\\/////__       
  ___/\\\/___________________________\/\\\/\\\__\/\\\__\/\\\____________________\/\\\_______      
   __/\\\_______________/\\\\\\\\\\\__\/\\\//\\\_\/\\\__\/\\\\\\\\\\\____________\/\\\_______     
    _\/\\\______________\///////////___\/\\\\//\\\\/\\\__\/\\\///////_____________\/\\\_______    
     _\//\\\____________________________\/\\\_\//\\\/\\\__\/\\\____________________\/\\\_______   
      __\///\\\__________________________\/\\\__\//\\\\\\__\/\\\____________________\/\\\_______  
       ____\////\\\\\\\\\_________________\/\\\___\//\\\\\__\/\\\\\\\\\\\\\\\________\/\\\_______ 
        _______\/////////__________________\///_____\/////___\///////////////_________\///________

           \\\||||||////
            \\  ~ ~  //
             (  @ @  )
    ______ oOOo-(_)-oOOo___________
    .......
    .......
    .......
    _____________Oooo._____________
       .oooO     (   )
        (   )     ) /
         \ (     (_/
          \_)

          .   ,               
       '. '.  \  \            
      ._ '-.'. `\  \          
        '-._; .'; `-.'.       
       `~-.; '.       '.      
        '--,`           '.    
           -='.          ;    
 .--=~~=-,    -.;        ;    
 .-=`;    `~,_.;        /
`  ,-`'    .-;         |         
   .-~`.    .;         ;         
    .;.-   .-;         ,\        
      `.'   ,=;     .-'  `~.-._
       .';   .';  .'      .'   '-.     
          .\  ;  ;        ,.' _  a',   
         .'~";-`   ;      ;"~` `'-=.) 
       .' .'   . _;  ;',  ;
       '-.._`~`.'  \  ; ; :          
            `~'    _'\\_ \\_         
                  /=`^^=`""/`)-.     
                  \ =  _ =     =\    
                   `""` `~-. =   ;   


                                    .,.               .,;;;;;,           
                                    ;;;;;;;,,        ,;;%%%%%;;  
                                     `;;;%%%%;;,.  ,;;%%;;%%%;;  
                                        `;%%;;%%%;;,;;%%%%%%%;;' 
                                         `;;%%;;%:,;%%%%%;;%%;;, 
                                            `;;%%%,;%%%%%%%%%;;; 
                                               `;:%%%%%%;;%%;;;' 
           ..,,,.                                 .:::::::.               
        .;;;;;;;;;;,.                                  s.                 
        `;;;;;;;;;;;;;,                               ,SSSs.              
          `:.:.:.:.:.:.:.                            ,SSSSSSs.            
           .;;;;;;;;;;;;;::,                        ,SSSSSSSSS,           
          ;;;;;;;;;;;;;;;;:::%,                    ,SS%;SSSSSSsS          
         ;;;;;;,:,:::::::;::::%%,                  SS%;SSSSSSsSS          
         ;;;;;,::a@@@@@@a::%%%%%%%,.   ...         SS%;SSSSSSSS'          
         `::::::@@@@@@@@@@@a;%%%%%%%%%'  #;        `SS%;SSSSS'            
  .,sSSSSs;%%,::@@@@@@;;' #`@@a;%%%%%'   ,'          `S%;SS'              
sSSSSSSSSSs;%%%,:@@@@a;;   .@@@a;%%sSSSS'           .%%%;SS,              
`SSSSSSSSSSSs;%%%,:@@@a;;;;@@@;%%sSSSS'        ..,,%%%;SSSSSSs.           
  `SSSSSSSSSSSSs;%%,%%%%%%%%%%%SSSS'     ..,,%;sSSS;%;SSSSSSSSs.          
     `SSSSSSSSSSS%;%;sSSSS;""""   ..,,%sSSSS;;SSSS%%%;SSSSSSSSSS.         
         """""" %%;SSSSSS;;%..,,sSSS;%SSSSS;%;%%%;%%%%;SSSSSS;SSS.        
                `;SSSSS;;%%%%%;SSSS;%%;%;%;sSSS;%%%%%%%;SSSSSS;SSS        
                 ;SSS;;%%%%%%%%;%;%sSSSS%;SSS;%%%%%%%%%;SSSSSS;SSS        
                 `S;;%%%%%%%%%%%%%SSSSS;%%%;%%%%%%%%%%%;SSSSSS;SSS        
                  ;SS;%%%%%%%%%%%%;%;%;%%;%%%%%%%%%%%%;SSSSSS;SSS'        
                  SS;%%%%%%%%%%%%%%%%%%%;%%%%%%%%%%%;SSSSSS;SSS'          
                  SS;%%%%%%%%%%%%%%%%%%;%%%%%%%%%%%;SSSSS;SSS'            
                  SS;%%%%%%%%%%%%%;sSSs;%%%%%%%%;SSSSSS;SSSS              
                  `SS;%%%%%%%%%%%%%%;SS;%%%%%%;SSSSSS;SSSS'               
                   `S;%%%%%%%%%%%%%%%;S;%%%%%;SSSS;SSSSS%                 
                    `S;%;%%%%%%%%%%%'   `%%%%;SSS;SSSSSS%.                
                    ,S;%%%%%%%%%%;'      `%%%%%;S   `SSSSs%,.             
                  ,%%%%%%%%%%;%;'         `%;%%%;     `SSSs;%%,.          
               ,%%%%%%;;;%;;%;'           .%%;%%%       `SSSSs;%%.        
            ,%%%%%' .%;%;%;'             ,%%;%%%'         `SSSS;%%        
          ,%%%%'   .%%%%'              ,%%%%%'             `SSs%%'        
        ,%%%%'    .%%%'              ,%%%%'                ,%%%'          
      ,%%%%'     .%%%              ,%%%%'                 ,%%%'           
    ,%%%%'      .%%%'            ,%%%%'                  ,%%%'            
  ,%%%%'        %%%%           ,%%%'                    ,%%%%             
  %%%%'       .:::::         ,%%%'                      %%%%'             
.:::::        :::::'       ,%%%'                       ,%%%%              
:::::'                   ,%%%%'                        %%%%%              
                        %%%%%'                         %%%%%              
                      .::::::                        .::::::              
                      ::::::'                        ::::::'              

Comme tout à l'heure, vous pouvez faire aller les choses moins vite :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <unistd.h>

int main(int argc, char** argv){
	FILE* fp = fopen("logo_cnet.txt", "r");
	if(fp != NULL){
		while(!feof(fp)){
			int currentChar = fgetc(fp);
			if(currentChar != EOF){
				printf("%c", (char)currentChar);
 				usleep(10000);
			}
		}
		fclose(fp);
	}
	return 0;
}

N'oubliez pas de recompilez avant de tester.

À mais c'est nul, les lignes ne s'affichent que quand elles sont finies.

Mais tous n'est pas perdu, nous avons bien fait une barre de chargement, non ?

Comme ça, j'en profite pour vous dire comment on fait en C, et oui on peut le faire.

D'abord il faut savoir que l'affichage de la console correspond à l'écriture dans un fichier, le fichier stdout pour la sortie standard, et le fichier stderr pour la sortie des erreurs.

Vous me voyez venir, non ?

Mais c'est bien sur, et si on écrivait dans le fichier stderr, on aurait l'affichage tout de suite, non ?

Et c'est une excellente réponse.

Mais comment on fait pour écrire dans un fichier ?

Alors, stderr comme stdout ne sont pas des fichiers, se sont des pointeurs vers des fichiers (qui sont déjà ouverts).

Et donc, pour écrire dans le pointeur d'un fichier ouvert en écriture ("w" pour le mode de fopen, bon ça serait plutôt "a" ou "a+" mais ne compliquons pas les choses) il faut utiliser la fonction fprintf que je vous présenterai dans le point suivant.

Je vous donne le programme tout cuit, mais on parlera de la fonction fprintf juste après :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <unistd.h>

int main(int argc, char** argv){
	FILE* fp = fopen("logo_cnet.txt", "r");
	if(fp != NULL){
		while(!feof(fp)){
			int currentChar = fgetc(fp);
			if(currentChar != EOF){
				fprintf(stderr, "%c", (char)currentChar);
				usleep(10000);
			}
		}
		fclose(fp);
	}
	return 0;
}

Et voilà le travail, on retrouve la grosse galère des machines à écrire sans le bruit, le bruit sera pour une autre fois.

N'oubliez pas le recompiler pour voir le résultat.