voila j'ai à traiter de grandes chaines de mon code qu'y a-t-il au-dessus des double long ?
Version imprimable
voila j'ai à traiter de grandes chaines de mon code qu'y a-t-il au-dessus des double long ?
Vu que les chaînes se stockent dans un tableau de caractères, l'idée de les mettre dans un double long ne semble pas judicieuse...Citation:
Envoyé par mrtatou
Si tu veux parler de grands nombres, il n'y a rien de standard pour cela... Il faut utiliser une bibliothèque externe ou alors le faire à la main avec un tableau par exemple...
Jc
excusez moi je travail avec un tableau de chiffres positifs qui doivent contenir jusqu'à 10 nombres
que dois -je utiliser comme unité pour mes variables?
Rajouter un unsigned ?
c'est une bonne idée mais j'ai essayé et ca ne fonctionne pas....
- Sont-ce des nombres réels ou entiers ?
- Quelle est la précision souhaitée ?
ce ne sont que des entiers positifs
Dans ce cas, si ta platteforme le supporte, utilise un unsigned long long, en règle générale, la plage de valeur possible pour ce type est la suivante :
0 à 18 446 744 073 709 551 615
Pour de plus amples information consulte la FAQ :
http://c.developpez.com/faq/c/?page=...S_taille_types
C'est pas plutôt : "je travaille avec un tableau de nombres positifs qui doivent contenir jusqu'à 10 chiffres ?Citation:
Envoyé par mrtatou
Marco85
merci
par contre comment transformer une chaine en usigned long long,
avec atoi et strtol ca ne fonctionne pas bien évidemment.
Tu veux sans doute direCitation:
Envoyé par mrtatou
<<excusez moi je travaille avec un tableau de nombres positifs qui doivent contenir jusqu'à 10 chiffres
que dois -je utiliser comme type pour mes variables?>>
Un peu plus de rigueur dans le vocabulaire permet de mieux définir ce dont on parle et d'éviter l'incompréhension.
10 chiffres, c'est pas méchant...
Et voilà.Code:
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 #include <stdio.h> #include <limits.h> #ifdef WIN32 #define LL "I64" #else #define LL "ll" #endif int main(void) { unsigned long long x = 99999999999ull; if (x <= ULLONG_MAX) { printf ("x = %"LL"u OK\n", x); } else { printf ("KO\n"); } return 0; }
strtoull()Citation:
Envoyé par mrtatou
voila mon code mais ca passe pas:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <dirent.h> #include <ctype.h> #include <unistd.h> #include <time.h> #include <netinet/in.h> #include <sys/socket.h> #include <arpa/inet.h> int main() { //conversion chaine en nombre char buff[32]="4294967295"; int tab[32]; unsigned long long n; char *end; n=strtoul(buff,&end,15); printf("end:%lu",buff); }
Faudrait se relire, arréter de coder n'importe comment, lire les docs, lire les réponses...Citation:
Envoyé par mrtatou
Code:
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 #include <stdio.h> #include <stdlib.h> #ifdef WIN32 #define LL "I64" #else #define LL "ll" #endif int main() { //conversion chaine en nombre char buff[32] = "4294967295"; int tab[32]; unsigned long long n; char *end; n = strtoull(buff, &end, 10); if (*end == 0) { printf("%"LL"u\n", n); } else { puts("ERR"); } return 0; }
Au fait: je n'ai pas trouvé strtoull sur l'aide de Windows.
Si ça ne marche pas, j'ai trouvé _atoi64, mais j'ignore s'il y a mieux
C'est Posix tout de même, manCitation:
Envoyé par Médinoc
Normal. long long, C'est C99.Citation:
Envoyé par Médinoc
De puis quand l'aide de windows t'es utile pour coder en C ? J'espère que tu fais lusion à la base MSDN parce que sinon j'ai du rater quelque chose ...Citation:
Au fait: je n'ai pas trouvé strtoull sur l'aide de Windows.
Oui, je parlais de la MSDN Library.