方法1:
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
long strtoint(char *str,int length);
int main(int argc, char* argv[])
{
int i=0;
char str[100];
while ((str[i]=getchar())!='0') {
i++;
}
long n=strtoint(str,i);
cout<<n<<endl;
return 0;
}
long strtoint(char *str,int length){
if(length > 1) {
return str[0]=='-' ? strtoint(str, length-1)*10-(str[length-1]-'0') : strtoint(str, length-1)*10+str[length-1]-'0';
} else {
return str[0]=='-' ? -1/10 : str[0]-'0';
}
}
方法2:
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int CovertStringToLon(char *str,long &lLongValue);
int main(int argc, char* argv[])
{
char *str = "-123";
long m;
CovertStringToLon(str,m);
cout<<"2 "<<m;
system("pause");
return 0;
}
int CovertStringToLon(char *str,long &lLongValue)
{
char *p = ((*str == '-'|| *str == '+') ? str+1:str);
for(lLongValue = 0; *p >= '0' && *p <= '9' && *p != 0; p++)
lLongValue = lLongValue * 10 + (*p- '0');
lLongValue = (*str== '-')?(-lLongValue):(lLongValue);
return (*p == 0 ? 1:0);
}