Giriş
Şu satırı dahil ederiz.
İmzası
Metodun imzası şöyle.
Şöyle yaparız.
Arka arkaya iki defa kullanmak istersek şöyle yaparız.
16'lık taban kullanılabilir.
Şu satırı dahil ederiz.
#include <cstdlib>
Sonucu long olarak istiyorsak kullanırız. Sonucu long long yani int64_t olarak istiyorsak strtoll () metodunu kullanmak gerekir.İmzası
Metodun imzası şöyle.
long strtol(const char *str, char **endptr, int base);Örnek
Şöyle yaparız.
char str[] = "987654321012345";
long num = 0;
errno = 0;
num = strtol (str, NULL, 10);
if (errno) { /* validate strtol conversion */
perror ("strtol conversion failed.");
...
}
printf ("%ld\n", num);
endptr kullanımıArka arkaya iki defa kullanmak istersek şöyle yaparız.
int sum(const char *input){
int i; // store sum in here
char *rest; // used as second argument in strtol
i = strtol(input, &rest, 10); // set first int in string to i
i += strtol(rest, &rest, 10); // add first and second int
return i;
}
int main(void){
char* nums = "23 42";
printf("%d\n",sum(nums));
return 0;
}
base kullanımı16'lık taban kullanılabilir.
const char* idString = ...
char *str_end = NULL,
var id = strtoul(idString, &str_end, 16);
Taban olarak 0 verilebilir. Bu durumda strtol tabanın ne olduğunu kendisi anlamaya çalışır.int base = 0;
long n = strtol(idString, &str_end, base);
Hiç yorum yok:
Yorum Gönder