Readline从C中的控制台接受int

时间:2011-02-12 21:19:11

标签: c input int readline

我想让readline接受一个int。完成此任务的最佳方法是什么?我接受字符串输入没有问题:

 char *usrname; // define user input

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

我明白在接受输入之前,拥有一个int需要对其进行一些错误检查。

2 个答案:

答案 0 :(得分:6)

Eduardo Costa's answer有效,但它会泄漏内存。最好定义一个函数来为你处理这个问题:

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;
}

此版本甚至可以保留线上的任何额外内容,以便您以后可以在需要时使用它。当然,如果你需要用额外的东西做很多事情,你可能最好只阅读该行并自己解析,而不是使用这样的函数。

答案 1 :(得分:-4)

你尝试过这样的事吗?

int i = atoi(readline(NULL));