Gattuso | Bonjour,
le programme suivant à pour but de demander un nombre et de l'afficher en ordre inverse.
Le problème que j'ai, c'est que ce n'est pas le cas à l'affichage.
Voici mon code :
Code :
- #include <stdio.h>
- #include <stdlib.h>
- int g(unsigned int n, char *res){
- if (n>9) return 1;
- *res = '0' + n;
- return 0;
- }
- int f(unsigned int n, char *s, size_t *l){
- char c; size_t cl=*l;
- if(n == 0)
- return 0;
- g(n%10U, s);
- c = *s;
- ++*l;
- f(n/10U, s+1, l);
- if(cl<*l/2){
- *s=s[*l-cl-1-cl];
- s[*l-cl-1-cl]=c;
- }
- return 0;
- }
- int main(void){
- unsigned int n;
- char buf[BUFSIZ];/*Suppose tres grand*/
- size_t l=0;
- printf("Entrez un nombre: " );
- if(scanf("%u",&n)==1){
- if(n!=0)
- f(n, buf, &l);
- else{
- buf[0]='\0';
- ++l;
- }
- buf[l]='\0';
- fprintf(stdout, "%s %u\n", buf, l);
- return EXIT_SUCCESS;
- }
- else return EXIT_FAILURE;
- }
|
Ce que j'obtiens :
Code :
- $ ./test
- Entrez un nombre: 45
- 45 2
|
Je voudrais aussi savoir comment modifier le main pour être sûr que l'entier sera positif
Merci |