用函数输入一串字符串比如786fhjv654gnvrf123gh要求输出786 654 123,这个该怎么写啊
逐个字符遍历,遇到数字字符就计算整数
#include <stdio.h>
int main()
{
char s[100];
gets(s);
int n=0,flag = 0,i=0;
while(s[i] != '\0')
{
if(s[i] >='0' && s[i]<='9')
{
n = n*10 + s[i] - '0';
flag = 1;
}
else
{
if(flag == 1)
{
printf("%d ",n);
flag = 0;
}
n = 0;
}
i++;
}
if(flag == 1)
printf("%d",n);
}
回答如下,记得采纳一下哦!可以使用循环遍历字符串,判断每个字符是否为数字,如果是则将其保存到一个临时字符串中,直到遇到第一个非数字的字符,然后将临时字符串中的数字输出,并清空临时字符串,继续遍历字符串,直到字符串末尾
#include <stdio.h>
#include <ctype.h>
void extractNumbers(const char* str) {
char tmp[100] = {0};
int i = 0;
while (str[i] != '\0') {
if (isdigit(str[i])) {
tmp[strlen(tmp)] = str[i];
} else if (strlen(tmp) > 0) {
printf("%s ", tmp);
memset(tmp, 0, sizeof(tmp));
}
i++;
}
if (strlen(tmp) > 0) {
printf("%s", tmp);
}
}
int main() {
char str[] = "786fhjv654gnvrf123gh";
extractNumbers(str);
return 0;
}
当然,也可用ascill码判断是否是数字,然后将其保存到数组,遇到非数字,数组保存一个空格。最后输出数组内容。