c - 将字符串转换为整数的程序

标签 c arrays string

我写的代码如下:

#include<stdio.h>
#include<math.h>
#include<string.h>
int strToint(char []);
int main()
{
    char str[20];
    printf("Enter the string-");
    gets(str);
    printf("\nthe integer is %d ",strToint(str));
    return 0;
}
int strToint(char str[])
{
    int i,a,sum=0,k,j;
    a=strlen(str);
    for(i=0;i<a;i++)
    {
        k=str[i]-'0';
        j=pow(10,a-i-1);
        sum+=k*j;
    }
    return sum;
}

如果我输入 567,我会得到 562,但我不明白为什么。我感觉这可能和pow函数有关。

感谢您的帮助。谢谢!

最佳答案

pow() 是一个浮点函数,其行为因系统而异。标准对其准确性没有任何要求。您的返回值似乎没有达到您要求的准确度。

您不需要实现将文本转换为整数的函数,因为标准库包含执行此操作的函数。一个显而易见的选择是 sscanf

但如果你必须实现这样的功能,你应该使用整数运算。任何此类代码都应处理负值,并检查无效输入。例如。当您将 "a" 传递给您的函数时会发生什么?

关于c - 将字符串转换为整数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089023/

相关文章:

C++将wchar_t反斜杠插入字符串

c++ - 如果我们从某个地址开始,我们如何确定变量在整个程序中占用的地址?

c - recvfrom 用零填充缓冲区

arrays - Swift 中 Float 数组中的最大值和最小值

java - Collections.shuffle 没有按预期工作

C# 多行字符串与 html

javascript - 如何在文本字段中写入字符串的字符数?

c - 与过程调用和汇编语言相关

C - 显示文件中 c 可执行文件的所有行以进行调试

php - 如何在响应中返回数组