我试图在C中计算字符串的值。
我将字符串定义为:char cadena[100] = "Esto es un text securizado$2516"
我需要将2516转换为int,我实际上尝试使用atoi()
,但我不知道如何分隔字符串以使用该函数。
答案 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;
}