将整数解析为字符串C.

Par*_*ius 19 c string int parsing

如何string(char* || char[])在C中解析整数?是否有与Integer.parseInt(String)C中Java方法相同的方法?

jpa*_*cek 47

如果要将整数转换为字符串,请尝试使用该函数snprintf().

如果要将字符串转换为整数,请尝试使用函数sscanf()atoi()atol().

  • 如果你想要错误检查,strtol或strtoul会比sscanf,atoi或atol更好. (6认同)

Col*_*lin 15

要将int转换为字符串:

int x = -5;
char buffer[50];
sprintf( buffer, "%d", x );
Run Code Online (Sandbox Code Playgroud)

你也可以做双打:

double d = 3.1415;
sprintf( buffer, "%f", d );
Run Code Online (Sandbox Code Playgroud)

要将字符串转换为int:

int x = atoi("-43");
Run Code Online (Sandbox Code Playgroud)

有关这些功能的文档,请参见http://www.acm.uiuc.edu/webmonkeys/book/c_guide/.

  • 您的代码中可能存在缓冲区溢出,但我不想计算您需要具有多少位整数才能使其发生.使用snprintf(). (5认同)

小智 10

这听起来像你有一个字符串,并希望将它转换为整数,从提到的角度来看parseInt,尽管问题不是清楚......

为此,请使用strtol.这个函数稍微复杂一点atoi,但作为回报,它提供了一个更清晰的错误条件指示,因为它可以填充一个指针(调用者提供)与第一个字符的地址混淆.然后,调用者可以检查有问题的字符并确定该字符串是否有效.atoi相比之下,只要它丢失就返回0,这并不总是有用 - 尽管如果你对这种行为感到满意,那么你也可以使用它.

以下示例使用strtol.检查错误非常简单:如果第一个无法识别的字符不是'\x0'字符串的结尾,那么该字符串被认为不包含有效的int.

int ParseInt(const char *s,int *i)
{
    char *ep;
    long l;

    l=strtol(s,&ep,0);

    if(*ep!=0)
        return 0;

    *i=(int)l;
    return 1;
 }
Run Code Online (Sandbox Code Playgroud)

如果字符串包含有效整数,则此函数用整数填充*i并返回1.否则,它返回0.