【问题标题】:How to convert character string to int如何将字符串转换为int
【发布时间】: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'。

标签: c character atoi


【解决方案1】:

不需要使用 atoi 函数。而不是这段代码sn -p

len = strlen(str);
for(i=0; i<len; i++)
{
  sum= sum + atoi(&str[i]);
}

你可以写

for ( const char *p = str; *p; ++p )
{
    if ( '0' < *p && *p <= '9' ) sum += *p - '0';
}

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2021-08-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多