if (str1[i] >= 0 && str1[i] <= 9)这一句错了!
应该为if (str1[i] >= '0' && str1[i] <= '9')。
最后的输出printf("\nshu zi ge shu wei:%d", j + 1);
中j+1改为j,不需要再加1了!
还有建议前面定义str2[N]时进行赋值str2[N]={0},
否则程序的输出结果后会跟有怪异字符,不信你试试!
#include
#define N 128
int main(void)
{
char str1[N], str2[N];
int i, j;
printf("Please input string:");
gets(str1); /*输入有错误,要改成*/
for (i = 0, j = 0; i < N; i++)
{
if (str1[i] >= 0 && str1[i] <= 9)
{
str2[j] = str1[i];
j++;
}
}
str2[j + 1] = '\0';
printf("\nshu zi ge shu wei:%d", j + 1);
puts(str2);/*输出也有问题,改成*/
return 0;
}
#include
#define N 128
int main(void)
{
char str1[N], str2[N];
int i, j;
printf("Please input string:");
scanf("%s", &str1);
for (i = 0, j = 0; i < N; i++)
{
if (str1[i] >= '0' && str1[i] <= '9')
{
str2[j] = str1[i];
j++;
}
}
str2[j] = '\0';
printf("\nshu zi ge shu wei:%d", j );
printf("\nshu zi wei:%s", str2);
return 0;
}