首页 > 解决方案 > 使用atoi将字符串索引转换为数组索引

问题描述

我正在编写一个计算阶乘数字总和的代码,我的解决方案是将数字转换为字符串,然后将该字符串放在数组中。

我尝试使用 atoi 将字符串索引转换为数组索引,但它不起作用,给我错误“传递 'atoi' 的参数 1 使指针从整数而不进行强制转换”

#include <string.h>
#include <stdlib.h>
int fat(int x)
{
    if (x == 0 || x == 1)
    {
        return 1;
    }
    else
    {
        return x * fat(x-1);
    }
}

int main()
{
    int n, i, f=0, arr[30];
    char str[30];
    printf("Type the value of N: ");
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        f = fat(i);
    }
    printf("%d \n", f);
    sprintf(str, "%d", f);
    n=0;
    for (i=0;i<strlen(str);i++)
    {
        arr[i]=atoi(str[i]);
        n=n+arr[i];
    }
    printf("%d", n);
}

标签: cstringindexingintatoi

解决方案


如果您只想将单个数字字符转换为数字,则无需使用atoi(). 使用str[i] - '0'.

        arr[i] = str[i] - '0';

数组似乎也没有什么意义。你可以这样做:

        n += str[i] - '0';

无需将所有数字保存在您不再使用的数组中。


推荐阅读