当前位置:  开发笔记 > 编程语言 > 正文

将整数解析为字符串C.

如何解决《将整数解析为字符串C.》经验,为你挑选了3个好方法。

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



1> jpalecek..:

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

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


如果你想要错误检查,strtol或strtoul会比sscanf,atoi或atol更好.

2> Colin..:

要将int转换为字符串:

int x = -5;
char buffer[50];
sprintf( buffer, "%d", x );

你也可以做双打:

double d = 3.1415;
sprintf( buffer, "%f", d );

要将字符串转换为int:

int x = atoi("-43");

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


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

3> 小智..:

这听起来像你有一个字符串,并希望将它转换为整数,从提到的角度来看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;
 }

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

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有