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 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.