gpt4 book ai didi

c - 我想加上字符串数据类型的数字

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:29 25 4
gpt4 key购买 nike

我将以下输入作为字符串:

Num: 12345

我想打印出输入的数字总和 (1+2+3+4+5 = 15):

total:15

我试过了,但是 for 循环中的 atoi() 有问题,我得到了一个错误:

[Error] invalid conversion from 'char' to 'const char*'

我该如何解决这个问题或如何以更简单的方式解决它?

 #include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

char numstr[100];
int total = 0;

main(){
printf("Num:");
scanf("%s", numstr);

for(int i = 0; i < strlen(numstr); i++){
total += atoi(numstr[i]);
}
printf("%d", total);
}

最佳答案

您可以将数字字符(在 ASCII 中)减去 0x30(即 ASCII 字符零“0”),以将 ASCII 数字字符转换为其十进制等效值。

 #include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
char numstr[100];
int total=0;
main(){
printf("Num:");
scanf("%s",numstr);

for(int i = 0;i<strlen(numstr);i++){
total += numstr[i] - 0x30;
}
printf("%d",total);
}

字符串“12345”将是

1 -> 0x31 - 0x30 = 1
2 -> 0x32 - 0x30 = 2
3 -> 0x33 - 0x30 = 3
4 -> 0x34 - 0x30 = 4
5 -> 0x35 - 0x30 = 5

关于c - 我想加上字符串数据类型的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com