华为2道机试题(review)

华为2道机试题:

 

review:

/**
@date:2011/09/02 review (not to use the fun atoi())
@author:weedge
*/
#include <stdio.h>
#include <stdlib.h>

void take_num(const char *strIn, int *n, unsigned int *outArray){
	if(strIn == NULL){
		printf("this is null string.");
	}else{
		int i = 0;
		while(*strIn){
			if(*strIn >= '0' && *strIn <='9'){
				outArray[i] = 0;
				while(*strIn >= '0' && *strIn <='9'){
					outArray[i] = outArray[i]*10 + ((*strIn++) - '0');
				}		
				i++;
			}
			strIn++;
		}
		*n = i;
	}
}

void take_num1(const char *strIn, int *n, unsigned int *outArray){ //use atoi()
	if(strIn == NULL){ 
		printf("this is null string."); 
	}else{ 
		int i = 0; 
		while(*strIn){ 
			if(*strIn >= '0' && *strIn <='9'){ 
				const char *begstr = strIn; 
				while(*strIn >= '0' && *strIn <='9'){ 
					strIn++; 
				} 
				outArray[i] = atoi(begstr);/*atoi() just read back the front number*/ 
				i++; 
			} 
			strIn++;
		} 
		*n = i; 
	} 
} 

int main(){
	char *strIn = "ab00cd+123000fght456-25  3.005fgh";
	int n=0;
	unsigned int outArray[20];
	take_num1(strIn,&n,outArray);
	printf("n:%d/n",n);
	for(int i=0; i<n; i++){
		printf("outArray[%d]=%u/n",i,outArray[i]);
	}
	system("pause");
	return 0;
}


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值