如何提取一大串字符中的每个数字?数字以空格隔开。
#include<stdio.h>
#define N 10000
int main(void)
{
char c,str[N];
int i=0;
int t=0;
int flag=0,stop=1,num=0;
char te[N][N];
//输入字符串
do
{
scanf("%c",&c);
str[i++]=c;
}while(c!='\n');
//处理字符串
while(str[t]!='\n')
{
if(str[t]!=' ')
{
te[flag][num]=str[t];
num++;
stop=0;
}
else if(str[t]==' '&&stop==0)
{
flag++;
num=0;
stop=1;
}
t++;
}
//输出
for(i=0;te[i]!='\0';i++)
printf("%s\t",te[i]);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s[] = "1 10 2 20 3 30 4";
const char *d = " \t";
char *p;
int num;
p = strtok(s,d);
while(p)
{
num = atoi(p); // p就是分割出来的数字的字符串形式,转成整型后就是num
printf("%s : %d\n", p, num);
p=strtok(NULL,d);
}
return 0;
}
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
p=s;
while (1) {
k=sscanf(p,"%d%n",&v,&n);
printf("k,v,n=%d,%d,%d\n",k,v,n);
if (1==k) {
p+=n;
} else if (0==k) {
printf("skip char[%c]\n",p[0]);
p++;
} else {//EOF==k
break;
}
}
printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.