首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >atoi在c中受挫

atoi在c中受挫
EN

Stack Overflow用户
提问于 2014-12-27 15:30:40
回答 3查看 730关注 0票数 0

我在这里迷路了。目的是什么?获取一个字符串并将其转换为整型?或者将字符转换为ASCII?如果我使用任何数字作为char s[],我会得到返回的数字。如果我使用任何字母,我得到一个0。这个输出正确吗?如何测试返回类型以确定发生了转换?

代码语言:javascript
复制
//atoi: convert s to integer

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

int atoi(char s[])
{
    int i, n;

    n = 0;
    for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
        n = 10 * n + (s[i] - '0');
    return n;
}
int main()
{
    char s[] = "7";
    printf("atoi = %d\n", atoi(s)); //atoi = 7...is this correct?
    return 0;
}

在K&Rs的第二个版本中,我得到了一个错误,if语句的左操作数必须是I-value。我从书上逐字逐句地抄了下来。我做错什么了?

代码语言:javascript
复制
#include <ctype.h>
#include <stdio.h>
//atoi: convert s to integer; version 2

int atoi(char s[])
{
    int i, n, sign;

    for (i = 0; isspace(s[i]); i++) //skip white space
        ;
    sign = (s[i] == '-') ? -1 : 1;
    if (s[i] == '+' || s[i] = '-') //skip sign
        i++;
    for (n = 0; isdigit(s[i]); i++)
        n = 10 * n + (s[i] - '0');
    return sign * n;
}
int main()
{
    char s[] = "9";
    printf("atoi = %d\m", atoi(s));
    return 0;
}
EN

回答 3

Stack Overflow用户

发布于 2014-12-27 15:44:11

显然,你没有“从书中逐字逐句地抄袭”。

您在if语句中使用赋值而不是比较。

更改此设置:

代码语言:javascript
复制
s[i] = '-'

To this:

代码语言:javascript
复制
s[i] == '-'
票数 3
EN

Stack Overflow用户

发布于 2014-12-27 15:33:25

我的atoi手册页上写着(部分),

atoi()函数将nptr指向的字符串的初始部分转换为int。其行为与

strtol(nptr,NULL,10);

除了atoi()不检测错误之外。

tl;dr

是。atoi("7")应为7。在stdlib.h中可以找到标准的atoi

票数 1
EN

Stack Overflow用户

发布于 2014-12-27 15:39:15

atoi()的实现看起来是正确的,尽管可能应该处理前导加号或减号以与C库实现兼容。

主程序可以使用work,但就编码方法而言,您可能会添加几个测试用例来证明典型的输入类型正确工作:

代码语言:javascript
复制
int main()
{
    const char tests[] = {"7", "0", "10", "99", "1000", "9999", "11111",
                         "99999", "12345678"};
    int j;
    for (j = 0;  test[j];  ++j)
         printf("atoi(%s) = %d\n", tests[j], atoi(tests[j]));
    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27665307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档