无法在C中检查字符串中的数字

时间:2014-05-26 01:05:15

标签: c string char

我已经检查了论坛上发布的类似问题,但没有一个回答我的问题。

我有一个字符串(char s []),我希望将该字符串中的数字“复制”到另一个(char n [])。

这是我对此的尝试:

   char s[] = "oa323shsh123383.33hbabsa3€"
   int len = strlen(s);
   char n[];
   int k;

   for (k = 0; k <= len; k++){
       if( s[k] >= '0' || s[k] <= '9') {
           n[k] = s[k] - 48;
       }
   }

然而这是错误的,因为它不打印任何东西。有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

使用&amp;&amp;在你的IF。

分配您的阵列n。简单的方法是将n声明为

char n[] = char[len+1];

使用另一个变量来计算添加到n的数字,否则你将得到n:

"..323....123383" etc

应该以

之类的东西结束
char s[] = "oa323shsh123383.33hbabsa3€"
int len = strlen(s);
char n[] = char[len+1];
int k, j=0;

for (k = 0; k <= len; k++){

    if( s[k] >= '0' && s[k] <= '9') {
        n[j] = s[k] - 48;
        n[j+1] = '\0';
        j++;
    }
}

答案 1 :(得分:0)

char s[] = "oa323shsh123383.33hbabsa3€";
int len = strlen(s);
char* n = (char*) malloc(len+1);
int i,j=0;

for (i = 0; i < len; ++i)
{
    if( s[i] >= '0' && s[i] <= '9')
        n[j++] = s[i];
}
n[j]=0;

n现在是一个可打印的字符串
完成后别忘了free