gpt4 book ai didi

c - 要从 stdin 转换为 int 的 char 所需的分配是什么

转载 作者:行者123 更新时间:2023-11-30 14:52:17 24 4
gpt4 key购买 nike

听我说,C 大神,我只是个新手:

尝试获取一个小 int 的输入字符,将其转换为 int,然后再次打印出来。

#include <stdio.h>
#include <ctype.h>

int main(void) {
char x[1]; /* I assumed this is OK because my input is between -127 and 127 */;
printf("Input your integer\n");
fgets(x, 1, stdin);
printf("you entered %s\n", x);
if (isdigit(x)) {
int i = x - '0';
printf("success it's:%d \n", i);
printf("two times %d is %d\n", i, i*2);
} else {
printf("YOU DID NOT INPUT AN INTEGER\n");
}
return 0;
}

要实现此功能,char x[1] 的正确分配是什么?最后我的程序只是对我尖叫。

编辑

感谢下面的回答,这有效:

#include <stdio.h>
#include <ctype.h>

int main(void) {
char x[2];
printf("Input your integer\n");
fgets(x, 2, stdin);
printf("you entered %s\n", x);
if (isdigit(x[0])) {
int i = x[0] - '0';
printf("success it's:%d \n", i);
printf("two times %d is %d\n", i, i*2);
} else {
printf("YOU DID NOT INPUT AN INTEGER\n");
}
return 0;
}

看来我需要考虑一个额外的 char \0,一旦在分配中完成,我就可以通过索引 char 数组来使用 isdigit 并进行相同的转换。尽管我不确定(我怀疑不是),但这是否是推荐使用的。

最佳答案

您的输入不会自动转换为 int。例如,如果您的用户输入“67 (enter)”,则您在 stdin 中应该期待的是 char 数组 {'6', '7', '\n', '\0'}

你想要做的是分配一个足够大的数组,保存来自stdin的用户输入,然后使用atoi进行转换。

关于c - 要从 stdin 转换为 int 的 char 所需的分配是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47684067/

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