c - 使用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);
}
解决方案
如果您只想将单个数字字符转换为数字,则无需使用atoi()
. 使用str[i] - '0'
.
arr[i] = str[i] - '0';
数组似乎也没有什么意义。你可以这样做:
n += str[i] - '0';
无需将所有数字保存在您不再使用的数组中。
推荐阅读
- tensorflow - 用于张量流的 Scikit-Learn 包装器不适用于 Celery-Redis
- python - 在 python 中使用 statsmodels.sandbox.regression.gmm.GMM 的问题
- java - 使用soapui-maven-plugin时无法执行拆卸脚本
- python - 运行线程任务导致意外错误
- json - 无法读取数据,因为它的格式不正确。快速5 json
- python - 智能物联网日志数据过滤
- azure - 在来自放置文件夹的 CD 管道中需要下载特定文件而不是整个放置文件夹
- google-chrome-extension - 有没有办法阻止 chrome://extensions 页面?
- c# - javascript 弹出窗口上的 Telerik Captcha
- angular - 使用 Auth0 保护 Angular 应用程序的 NestJS API