LINUX.ORG.RU

int и char


0

0
У мя есть переменная типа char c[]="123"; и есть переменная int i; Как мне присвоить переменной i значение переменной с(чтоб и было равно 123)?
anonymous
sprintf (c,"%i",&i);
anonymous
()

#include <stdlib.h>
i=atoi(c);

или 

man atoi
anonymous
()
Я бы использовал strtol.

anonymous: только наверное не sprintf, а scanf :)
Murr ★★
()
Вернее даже sscanf.
Murr ★★
()
2Murr: зачем strtol - если есть atoi? а ну да - глубина вызова .. но по мне сейчас больше надо заботится не о быстродествии а о самом коде .. ему не нужен endpoiter и ему нужно десятичное число - поэтому по нефиг делать тут strtolу
lg ★★
()
lg: Разве неочевидно зачем? Для обработки ошибок, конечно же.
Murr ★★
()
каких ошибок? единственная ошибка которая может возникнуть это out-of-range

a = atoi(str);
if (errno == ERANGE) {
/* XXX */
}

lg ★★
()
Вот таких:

[murr@murr tmp]# cat myu.c
#include <stdio.h>
#include <stdlib.h>

extern int errno;

main () {
    int i = atoi ("a1");

    printf ("i=%d errno=%d\n", i ,errno);

    return 0;
}[murr@murr tmp]# gcc myu.c
myu.c:12:2: warning: no newline at end of file
[murr@murr tmp]# ./a.out
i=0 errno=0
[murr@murr tmp]#
Murr ★★
()
а где ошибка то? :)
lg ★★
()
Ошибочное выражение преобразовано в 0.
Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.