输入一个字符串保存到数组str中,将str中的数字字符存储到数组tOrigin中,并将其转换为整数输出,用k记录字符串中数字字符的个数。例如:用户输入字符串1243abc3,则将12433取出以整数形式输出。阅读程序,找出其中的错误,并改正之。
注意点都写在注释了
完整代码:
#include <math.h>
#include <stdio.h>
void fun(char *s, char *t, int* k)
{
int i,j=0;
for (i = 0; s[i]; i++)
if ( ('0' <= s[i] ) && (s[i] <= '9') ) //数组s存储的是字符,不能和数字比较
{
t[j] = s[i];
j++; //个人觉得单独写个j统计方便点
}
*k=j;// 直接对k赋值,因为使用的是指针所以可以直接对主函数的k操作
}
void main()
{
char str[100], tOrigin[9]; //str保存字符串,torigin保存str中的数字
long int n=0; //不给初始值学校系统会出错,有些编译器默认0就不会出错
int i, k;//k记录数字个数
printf("Please enter string s:");
scanf("%s", str);
fun(str, tOrigin, &k);
for (i = 0; i < k; i++) //将字符串转为数字
n += (tOrigin [k - 1 - i] - '0') * pow(10, i);
printf("The result is: %d", n);
}```
c语言习题