atoi - int'e çevirir
atoi yazısına taşıdım.
strtol - long'a çevirir
strtol yazısına taşıdım.
strtoll() 64 bitlik integer'a çevirir.
atoi yazısına taşıdım.
strtol - long'a çevirir
strtol yazısına taşıdım.
strtoul - unsigned long'a çevirir
strtoul() 10'luk düzen ile şöyle kullanılabilir.
char * stop;
unsigned long int time = strtoul(argv[1], &stop, 10);
if (*stop != 0) {
// strtoul failed to parse the argument.
}
16'lık düzen kullanılabilir.
strtoul - long long'a çevirirconst char* idString = ...
char *str_end = NULL,
var id = strtoul(idString, &str_end, 16);
Düzen olarak 0 verilebilir. Bu durumda strtoul düzen'in ne olduğunu kendisi anlamaya çalışır.int base = 0;
long n = strtol(idString, &str_end, base);
Hata kontrolü şöyle yapılırif(*str == '\0') {
/* str was empty */ (1)
} else if(endptr == str) {
/* str was completely invalid */ (2)
} else if(*endptr != '\0') {
/* numeric result followed by trailing nonnumeric character(s) */ (3)
} else {
/* str was a completely valid number (perhaps with leading whitespace) */ (4)
}
3 durum. Eğer tüm string'in kullanılmasını beklemiyorsak - örneğin 0XFF_FF_FF_FF_FF verilmiştir - bu durumda errno'ya bakarız. Önce errno 0 yapılır.errno = 0;
var id = strtol( idString, &str_end, 16 );
Taşma olduğunu böyle tespit ederiz.if ( (id == ULONG_MAX) && (errno == ERANGE))
{...}
4. durum Eğer tüm string'in kullanılmasını istiyorsak stop'un null olduğuna bakmamız gerekir.strtoll() 64 bitlik integer'a çevirir.
Hiç yorum yok:
Yorum Gönder