Readline принимает int из консоли в C - PullRequest
3 голосов
/ 13 февраля 2011

Я бы хотел, чтобы readline принимала int.Каков наилучший способ сделать это?У меня нет проблем с принятием строкового ввода, например:

 char *usrname; // define user input

 /* accept input */
 printf("Enter new name:");
 usrname = readline(NULL);

Я понимаю, что наличие int потребует некоторой проверки ошибок перед тем, как принять ввод.

Ответы [ 2 ]

6 голосов
/ 13 февраля 2011

Ответ Эдуардо Коста работает, но утечка памяти. Для вас лучше определить функцию, которая позаботится об этом:

int readint(char *p, char **e)
{
    char *c = readline(p);
    int i = strtol(c, e, 0);
    if(e)
      {
        size_t o = (size_t)(*e - c),
               l = strlen(*e) + 1;
        *e = malloc(l);
        // error checking omitted
        memcpy(*e, c + o, l);
      }
    free(c);
    return i;
}

Эта версия даже сохранит любые дополнительные материалы в строке, чтобы вы могли использовать их позже, если вам это нужно. Конечно, если вам нужно много делать с дополнительными вещами, вам может быть лучше просто прочитать строку и проанализировать ее самостоятельно, а не с помощью таких функций.

0 голосов
/ 13 февраля 2011

Вы пробовали что-то подобное?

int i = atoi(readline(NULL));
...