gpt4 book ai didi

c - 仅将整数扫描到数组中

转载 作者:行者123 更新时间:2023-11-30 16:33:36 25 4
gpt4 key购买 nike

作为我的作业的一部分,我需要仅使用 <stdio.h> 从用户那里获取一个数字图书馆。

do {
scanf("%d",&num);
} while (num>9 || num<0);

但是程序还会从用户那里获取字符和其他东西。

有什么建议吗?

最佳答案

解决此问题的一种方法是获取扫描“数字”的 ASCII 值,并确保它位于 ASCII 值 0X30 和 0X39(或 48 和 57)之间。

从你的逻辑来看,你似乎对大于 9 的数字(多位数)和小于 0 的数字(有符号数字/整数)感兴趣。

我建议最好不要使用 scanf,而是使用 getchar 之类的东西,它一次返回一个字符。

使用 getchar 扫描多位数字的简单方法可以是:

int getNumber()
{
int sign = 1;
int i = 0;
int ch;
ch = getchar();
if((ch == '-') || (ch == '+')) //check sign
{
if(ch == '-') sign = -1;
}
else
{
if (ch > '9' || ch < '0')
return NULL; // Your requirement - it's a non number
i *= 10;
i += ch - '0';
}
while ((ch = getchar()) != '\n') //get remaining chars
{
if (ch > '9' || ch < '0')
return NULL; // Your requirement - it's a non number
i *= 10;
i += ch - '0';
}
i *= sign; //change sign
return i;
}

您可以调用此函数来代替 scanf

关于c - 仅将整数扫描到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49692624/

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