每日一题——第八十九题
题目:在字符串中找到提取数字,并统计一共找到多少整数,a123xxyu23&8889,那么找到的整数为123,23, 8889
//思想:
#include<stdio.h>
#include<stdbool.h>
#include<ctype.h>int main() {char str[] = "a123xxyu23&8889";int count = 0;int num = 0;//用于临时存放当前正在构建的整数。bool inNum = false;//用于标记当前是否正在读取一个整数for (int i = 0; str[i] != '\0'; i++){if (isdigit(str[i])) {//如果当前字符是数字的话,则开始或者继续构建数字if (!inNum) {//如果之前不在数字中,则重置num并开始新的整数,将inNum置为true,表示当前在数字中num = 0;inNum = true;}num = num * 10 + (str[i] - '0');//将当前数字加到num上}else {//如果当前字符不是数字, 则截断了,同时判断,如果之前是在数字中,则就打印这个数字,并且计数器+1,并将inNum状态修改为false,方便下一次判断读取//否则,啥也不做,执行下一次循环if (inNum) {//之前在读取数字,则打印该数字,并重置状态printf("找到整数:%d\n", num);count++;inNum = false;}}}if (inNum) {//判断之前是否在数字中,如果在,并且跳出循环了,则需要单独判断,并打印出来printf("找到整数:%d\n", num);count++;}printf("总共找到整数 %d个\n", count);return 0;
}