我已经检查了论坛上发布的类似问题,但没有一个回答我的问题。
我有一个字符串(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;
}
}
然而这是错误的,因为它不打印任何东西。有人能帮助我吗?
答案 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
。