gpt4 book ai didi

c - atoi 沮丧

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

我迷路了。什么目的?把一个字符串变成一个整数?或者将字符转换为 ASCII?如果我为 char s[] 使用任何数字,我会返回该数字。如果我使用任何字母,我都会得到 0。此输出是否正确?如何测试返回类型以了解转换是否发生?

//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&R 的第二个版本中,我得到一个错误,即 if 语句的左操作数必须是 I 值。我从书中逐字逐句地抄写了这句话。我做错了什么?

#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;
}

最佳答案

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

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

改变这个:

s[i] = '-'

对此:

s[i] == '-'

关于c - atoi 沮丧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665307/

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