【发布时间】:2022-06-27 22:19:45
【问题描述】:
这个问题是将字符串转换为int。
如果输入的是字符串,输入的内容会被转换为int。
例如,如果您通过键盘“C35#37”输入字符串
这个程序应该加上 3 + 5 + 3 + 7 所以结果是 18。
所以我通过 strlen 获取字符串的长度。并使用“for语句”来区分这个输入是char还是int。(因为如果在atoi中输入char,结果是0)
但是我做的这个程序运行不好。
我想知道为什么这个程序不工作以及如何解决这个问题。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
char str[200];
int len, i,sum=0;
fputs("문자열을 입력해 주세요: ",stdout);
fgets(str,sizeof(str),stdin);
len = strlen(str);
for(i=0; i<len; i++)
{
sum= sum + atoi(&str[i]);
}
printf("%d",sum);
return 0;
}
结果1:
> Executing task: ./blog <
문자열을 입력해 주세요: a12
14
Terminal will be reused by tasks, press any key to close it.
结果2:
> Executing task: ./blog <
문자열을 입력해 주세요: 123
149
Terminal will be reused by tasks, press any key to close it.
【问题讨论】:
-
sum = strtol(str, NULL, 10);(或sum = atoi(str);,如果您不关心验证) -
或者如果你想检查数字并自己进行字符到整数的转换,你必须记住
atoi将整个字符串转换为其对应的数字.所以atoi("14")将返回整数值14。使用isdigit并从每个单独的字符中减去'0'。