题目:从当前字符串中提取整数
#include<stdio.h>
#include<stdbool.h>
#include<ctype.h>
int main() {
char str[] = "a123x456 17960? 302tab5876";
int count = 0, num = 0;
bool inNumber = false;
for (int i = 0; str[i] != '\0'; i++)
{
if (isdigit(str[i]))
{
if (!inNumber) //如果之前不在数字中,则重置num并开始新的整数
{
num = 0;
inNumber = true;//重置标志位,标记当前在数字中
}
num = num * 10 + (str[i] - '0');//将当前字符转为数字,并累加到num上
}
else//当前字符非数字
{
if (inNumber)//判断之前是否在数字中
{
//如果在的话,打印数字
printf("找到整数:%d\n", num);
count++;
inNumber = false;
}
}
}
//不要忘了检查字符串的最后一个字符是否也为整数
if (inNumber)//如果之前在数字中
{
printf("找到整数:%d\n", num);
count++;
}
printf("共找到整数:%d个", count);
return 0;
}