直接上代码(代码参照网上大神,自己做了一些修改)
#include<stdio.h>
#include<string.h>
int arrays[1000+1];
int j = 0; //数组中数的个数
int sumInt(char *s)
{
int sum=0,t=0;
char *p=s;
int inNumber=0;
int count = 0 ;
//我把inNumber作为负数标记
//将字符串中的正、负整数取出求和
//*(p-1) 确保把最后的数字提取到
while(*(p-1)!='\0')
{
if('0'<=*p && *p<='9')
{ //t*10 相当于进位,-48相当于把字符'0'到'9'转换为数字0-9
t=10*t+*p-48;
//inNumbe==1 ,该数为负数
if(*(p-1)=='-')
inNumber=1;
count++; //或者count=1 ; 只要count!=0 就行
}
else
{
if(inNumber==1)
t=-t;
if(count != 0)
{
//printf("t=%d\n",t);
arrays[j++] = t ;
}
count=0;
sum=sum+t;
t=0;
inNumber=0;
}
p++;
}
return sum;
}
int main()
{
char s[1000+1];
//scanf("%s",s); //这个函数也可以获取输入的字符串,但是针对于空格后面的字符直接忽略掉,建议不适用这个方法
gets(s); //这个函数也可以获取输入的字符串,但是会出现Wram,原因是不知道输入字符串的长度
printf("输入的字符串为:\n%s\n",s);
printf("整数组和为=%d\n",sumInt(s));
for(int i=0;i<j;i++)
printf("%5d",arrays[i]);
printf("\n");
printf("整数个数:%d\n",j-1);
return 0;
}
程序运行结果