TD 1
TD 1
TD 1
L3 INFO 2013–2014
TD 1, tableaux, fonctions, en C
On rappelle que int getchar() lit un caractère sur l’entrée standard, où EOF à la fin du fichier.
Inversement, la fonction int putchar(int) écrit un caractère sur la sortie standard, et retourne EOF
seulement si une erreur s’est produite.
L’exemple suivant ne fait que recopier l’entrée sur la sortie.
#include <stdio.h>
int main()
{
int c;
int error = 0;
while ( ( c = getchar() ) != EOF )
{
if ( putchar( c ) == EOF )
{
error = 1;
break;
}
}
return error;
}
On va écrire une fonction qui lira une ligne complète de l’entrée pour la mettre dans un tableau de
caractère (mémoire TAMPON). La chaı̂ne mémorisée ne contiendra pas le caractère fin de ligne (’\n’)
mais bien le caractère fin de chaı̂ne (’\0’).
#include <stdio.h>
#include <string.h>
int main()
1
{
char tampon[ NBCHARMAX + 1 ];
while ( lit_ligne( tampon ) != EOF )
{
// Affiche le nombre de caractères puis la chaine de caractères.
printf( "%d : %s\n", strlen( tampon ), tampon );
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char tampon[ NBCHARMAX + 1 ];
while ( lit_ligne( tampon ) != EOF )
{
cesar( tampon );
puts( tampon ); // affiche la chaine chiffree
}
return 0;
}
2
S’en servir pour faire l’équivalent de la commande unix grep, qui retourne toutes les lignes où elle
trouve l’occurence de la chaı̂ne donnée. Par exemple:
Est-ce selon vous une façon efficace de rechercher une sous-chaı̂ne ? Des idées ?
#include "Token.h"
int main()
{
char s[] = "Nous irons tous au paradis";
Token tok;
Token_init( &tok, s, ’ ’ );
for( ; ! Token_fini( &tok ); Token_suivant( &tok ) )
printf( "%s\n", Token_valeur( &tok ) );
Token_termine( &tok );
}
affichera:
Nous
irons
tous
au
paradis
Dans tout cet exercice, on supposera qu’un Token ne peut excéder 256 caractères.