unsigned int string_to_uint(char textual_number[]) {
int i=0;
unsigned int res=0;
int len=strlen(textual_number);
while(textual_number[i]!='\0'){
res=res+(textual_number[i]*pow(10,i)-'0');
i++;
}
return res;
}
/unsigned int string_to_uint(char textual_number[]){
int i=0;
unsigned int res=0;
while(textual_number[i]!='\0'){
res=(res10)+(textual_number[i]-'0');
i=i+1;
}
return res;
}*/
void main(){
printf("%u %u %u \n",string_to_uint("325"),string_to_uint("0"),string_to_uint("946312"));
}
请问为什么上面的的代码输出结果不对呢?我还试了res=res+(textual_number[i]*pow(10,len-1-i)-'0')也不对。(下面的输出结果就是对的)。另外,下面的代码,-0
的意义是什么呢?
帮你修改好了,textual_number[i] - '0'
的意义是把数字字符('0', '1', ..., '9')
转换成对应的数字(0, 1, ..., 9)
#include <stdio.h>
#include <math.h>
#include <string.h>
unsigned int string_to_uint(char textual_number[])
{
int i = 0;
unsigned int res = 0;
int len = strlen(textual_number);
while (textual_number[i] != '\0')
{
res = res + ((textual_number[i] - '0') * pow(10, len - i - 1));
i++;
}
return res;
}
/*
unsigned int string_to_uint(char textual_number[])
{
int i = 0;
unsigned int res = 0;
while (textual_number[i] != '\0')
{
res = (res * 10) + (textual_number[i] - '0');
i = i + 1;
}
return res;
}
*/
int main()
{
printf("%u %u %u \n", string_to_uint("325"), string_to_uint("0"), string_to_uint("946312"));
return 0;
}