C语言 字符串中的数字存储到int型数组中的若干小问题(二)

这段代码主要是将一串字符中的数字转化成int型,并保存到int型数组中。
容易犯的错误,字符串中的数字在进行判断的时候,容易误漏了单引号,比如 if ((str[i-1]==‘0’)||num!=0),这个在判断的时候误写成str[i-1]==0,导致字符串中的0无法输入到int型数组中,结果花费过长时间才发现。

int main(int argc, char *argv[])
{
 char str[128]="0a0120t0*04e506/789b00c98d\n";
 int arr[100]={0};
 int i,j;
 int count=0;
 int num=0; 
 
 //思路:首先判断当前字符串中的字符是否是数字,
 //若是数字的话进行if语句中的操作,
 //如果不是,则将num中的数字存储到int型数组中
 
for(i=0;i<strlen(str);i++){  //将字符串中的数字存储到int型数组中
  	if(str[i]>47&&str[i]<58){   //48~57是字符串中0~9的ASCII码  
   		num=num*10+str[i]-48;
  	}else{
  	 	if((str[i-1]=='0')||num!=0){
  	 	//(str[i-1]=='0')这个主要是判断一串或者单个0,并将这个0存储到Int型数组中
    			arr[count++]=num;
    			num=0;
   		}

 	}
 }  


 printf("字符串中整数总共有:%d\n",count);
 for(j=0;j<count;j++){ //遍历打印int数组内容
 	 printf("%d\t",arr[j]);
 }
 return 0;
}

运行结果:

字符串中整数总共有:9
0 120 0 4 506 78 9 0 98 请按任意键继续. . .

发布了9 篇原创文章 · 获赞 0 · 访问量 88

猜你喜欢

转载自blog.csdn.net/ren_x_guo/article/details/104732335