请问我的c代码错在哪里呀❤

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=(res
10)+(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;
}