Exercice précédent : E4. Dans une chaîne, trouver la clé, afficher sa valeur Exercice suivant : E6. Lire, trouver la clé, afficher sa valeur

Consignes

Écrivez la fonction suivante. Elle doit prendre un descripteur de fichier sur lequel lire (à passer à read) et un autre sur lequel écrire (à passer à write).

int read_write_by_line(int fd_source, int fd_dest);

Elle doit lire en boucle et écrire chacune des lignes qu’elle rencontre en les préfixant de leur numéro de ligne. La fonction doit s’arrêter de lire en boucle dès que read renvoie zéro ou une erreur.

Exemple

Soit le main suivant :

int main(void)
{
	int n_lines_read;

	n_lines_read = read_write_by_line(0, 1);
	printf("read %d lines\n", n_lines_read);
	return (0);
}

Soit un fichier toto.txt :

hello
world
tata
toto
patate
frites

L’exécution donnerai le résultat suivant :

$ ./a.out < toto.txt
1: hello
2: world
3: tata
4: toto
5: patate
6: frites
read 6 lines

En cas de difficulté

Si vous bloquez sur cet exercice, ces annexes peuvent vous aider :