如何计算C中字符串的数值

时间:2015-11-19 20:28:44

标签: c string char

我试图在C中计算字符串的值。

我将字符串定义为:char cadena[100] = "Esto es un text securizado$2516"

我需要将2516转换为int,我实际上尝试使用atoi(),但我不知道如何分隔字符串以使用该函数。

PS:请原谅我的英语,不是我的母语,我希望你明白我想做什么。

3 个答案:

答案 0 :(得分:1)

直接的方法可以采用以下方式

int number = 0;
char cadena[100] = "Esto es un text securizado$2516";

size_t n = strcspn( cadena, "0123456789" );

if ( cadena[n] ) number = atoi( cadena + n );

或者如果数字已经被0初始化,那么你可以写

number = atoi( cadena + n );

在这种情况下,零将是默认值。

答案 1 :(得分:0)

您可以使用strrchr查找最正确的字符匹配项。它返回指向最右边字符的指针,如果找不到则指向NULL

char *p;
int n;
if ((p = strrchr(cadena, '$')) != NULL)
    sscanf(p + 1, "%d", &n);

请注意,我们向p添加1。这是因为p指向$字符。

不要使用atoi,因为它没有错误检查。另一方面,sscanf失败时返回0。

答案 2 :(得分:0)

#include <stdio.h>

int main(void){
    char cadena[100] = "Esto es un text securizado$2516";
    int value = 0;
    size_t i;

    for(i = 0; cadena[i]; ++i){
        if(1 == sscanf(cadena + i, "%d", &value))//try and get
            break;
    }
    printf("%d\n", value);

    return 0;
}