将字符串转化为数字的函数怎么写?
一、测试篇
首先说要有哪些功能测试?(据说先写测试用例后写代码,比较高级)
int StrToInt(char * string){
int number=0;
char temp;
if(*string==NULL)
cout<<"空指针,不能转化"<<endl;
if(*string=='+'||*string=='-'){//首字符为+-或者数字,才允许转化
temp=*string;
string++;
while(isdigit(*string)&&*string!='\0'){//未结束,且为数字
number=number*10+*string-'0';
++string;
}
if(!isdigit(*string)&&*string!='\0'){ //非正常结束,且不是文件结尾
printf("不能转化,返回值:");
return 0;
}
if(temp=='-')
number=number*(-1);
return number;
}
else if((!isdigit(*string))&&(*string!='+')&&(*string!='-')){//当前字符不是+、-、和数字的其他字符
printf("不能转化,返回值:");
return 0;
}
else{
do{
number=number*10+*string-'0';
++string;
}while(*string!='\0'&&isdigit(*string));
if(!isdigit(*string)&&*string!='\0'){ //未到串尾,且不是数字
printf("不能转化,返回值:");
return 0;
}
else
return number;
}
}
测试主程序:
#include <iostream>
#include <cstring>
#include<cctype>
using namespace std;
int main(){
char s[10];
int a;
gets(s);
a=StrToInt(s);
printf("%d",a);
system("pause");
return 0;
}
题目来源:剑指offer P12
程序暂时完成初步功能,通过所列出的测试用例。欢迎拍砖,共同完善。