编写函数stoi(char str[ ]),实现如下功能:从字符串str(字符串中不超过10个数字符号)中提取数字符号,并形成对应的整数。编写主程序,测试stoi函数的功能并在主程序中输出结果。例如字符串为:a1b2c3,则得到整数123。
一个简单实现:
#include <stdio.h>
#include <string.h>
int stoi(char str[]){
int i;
int num=0;
int k=1;
int temp[10];
int j=0;
//把字符串里面的数存放到一个int数组
for(i=0;i<strlen(str);i++){
if(str[i]>='0'&&str[i]<='9'){
temp[j]=k*(str[i]-'0');
j++;
}
}
//从这个数组拼接出一个整数
for(i=0;i<j;i++){
num+=temp[j-i-1]*k;
k*=10;
}
return num;
}
int main(void){
char str[20];
gets(str); //获取一个字符串
printf("%d\n",stoi(str)); //打印转换结果
return 0;
}
#include <stdio.h>
#include <ctype.h>
int stoi(char s[])
{
int r = 0;
while (*s)
{
if (isdigit(*s))
r = r * 10 + *s - '0';
s++;
}
return r;
}
int main()
{
char s[128];
scanf("%s", s);
printf("%d", stoi(s));
return 0;
}
#include <string.h>
#include <stdio.h>
int stoi(char t[])
{
int s[10];
int j,k,h=0;
int len=strlen(t);
for( j=0; j< len; j++)
{
if('0'<=t[j]&&t[j]<='9')
{
s[h]=t[j]-48;h++;
}
}
int sum=0;
int wei=1;
for( k=h-1; k>=0; k--)
{
sum+=wei*s[k];
wei=wei*10;
}
int digit=sum;
return digit;
}
int main()
{
puts("请输入字符串:");
char t[10];
gets(t);
printf("%d",stoi(t));
return 0;
}