#include int main (void) { int i = 0; char buf[256]; char n1[64], n2[64]; int nb, nb1, nb2; int test = 0; char *p, *p2, *ret; printf("Entrer le nombre\n"); /** on regarde la chaine de caractère correspondant au nombre saisie **/ scanf("%s", &buf); /** on attribue un pointeur à buf *p correspond à buf[0] au depart **/ p = buf; /** on attribue un pointeur aussi à buf **/ p2 = buf; /** on boucle jusqu'à tend qu'on tombe sur autre chose que des nombres, tout en faisant evolué le pointeur **/ while ((isdigit(*p)) && (*p != 0)) p++; /** on verifie bien que *p c'est un / **/ if (*p == '/') { /** entre le debut de la chaine de caractère et le /, on enregistre, cette portion de chaine de caractère dans une variable n1 correspondant au numérateur **/ strncpy(n1, p2, p - p2); /** on transforme la chaine de caractère n1 en nombre **/ nb1 = atoi(n1); /** on attribue le nombre 1 à test pour dire que le nombre est une fraction **/ test = 1; } /** on fais evolue le pointeur pour enlever le / **/ p++; /** apres le / et la fin de la chaine de caractère, on enregistre, cette portion de chaine de caractère dans une variable n2 correspondant au dénominateur **/ strncpy(n2, p, p - p2); /** on transforme n2 en nombre **/ nb2 = atoi(n2); /** si test n'est pas égal à 0, c'est que le nombre est une fraction **/ if (!test) nb = nb1/nb2; /** sinon la chaine de caractère correspond tout simplement à un nombre à par entière **/ else nb = atoi(buf); return 0; }