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 35 36 37 38 39 40 41 42 43 44 45 46 47
| #include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
/* Taille qui va etre lue dans le fichier */
#define BUFF_SIZE 512
int func(char *path, int *nb, int *first)
{
int fd; /* Filme descriptor sur ton fichier a ouvrir */
char buffer[BUFF_SIZE]; /* buffer pour lire ton fichier */
int retread; /* controle le retour de read : -1 = erreur, 0 = plus rien a lire */
int i; /* index qui va parcourir le buffer lu a chaque fois pour compter le nombre de chiffres */
char flag; /* flag qui permet de savoir si on est au premier caractere de la premiere lecture pour le recuperer */
flag = 0; /* intitialisation de flag a 0, on est au debut */
if ((fd = open(path, O_RDONLY)) == -1) /* on ouvre le fichier en lecture seule */
return (printf("Error on opening\n")); /* erreur si open retourne -1, tu peux utiliser errno (perror) */
while ((retread = read(fd, buffer, BUFF_SIZE)) > 0) /* tant qu'on lit quelque chose */
{
if (flag == 0) /* si le flag est a 0, on recupere le premier chiffre ... */
{
*first = buffer[0]; /* on le stocke dans first */
flag = 1; /* on met le flag a 1, on est plus au debut */
}
for (i = 0; i < BUFF_SIZE; i++) /* on parcourt le buffer pour compter les chifres */
{
if (buffer[i] >= '1' && buffer[i] <= '9') /* correspond a un "isnum" ou "isdigit, on regarde si le caractere est entre 1 et 9 (entre quotes car ce n'est pas le caractere qui a pour valeur ascii 1 ou 9, mais les ' ' permettent de recuperer la valeur ascii du chiffre 1 ou 9 */
++(*nb); /* on incremente la variable qui compte le nombre de chiffres */
}
}
if (close(fd) == -1) /* on ferme le fichier */
return (printf("Error on closing\n")); /* on error... */
return (0);
}
int main(void)
{
char *my_file; /* ton fichier */
int nb; /* nombre de chiffres */
int first; /* premier chiffre */
my_file = "test.txt";
if (func(my_file, &nb, &first) != 0) /* tu passes l'adresses des variables nb et first pour pouvoir les remplir dans la fonction "func" */
return (1);
printf("nb = %i, first = %d\n", nb, first);
return (0); |
Partager