gpt4 book ai didi

c - 我如何使用 sscanf 接受零作为输入,但不接受非数字输入?

转载 作者:行者123 更新时间:2023-11-30 16:56:46 26 4
gpt4 key购买 nike

在下面的示例中,我希望能够接受 0 作为分子,但不接受分母。我还希望排除非数字字符的输入。我觉得我错过了一些非常简单的东西,或者不太明白如何使用 sscanf。

    #include <stdio.h>


int main(int argc, char *argv[]) {

double numerator = 0.0;
double denominator = 0.0;
double result = 0.0;


if (argc == 3.0) {
sscanf(argv[1],"%lf", &numerator);
sscanf(argv[2],"%lf", &denominator);

result = numerator / denominator;


if (denominator == 0){
printf("invalid input - divide by zero not allowed\n");
}
else if (numerator == 0){
printf("invalid input\n");
}
else printf("%lf\n", result);


}




return 0;
}

最佳答案

使用 scanf 系列函数确保输入有效的惯用方法是尝试在数字后面读取某些内容,并控制您只能获得一个值:

if (argc == 3) {
char dummy[2];
if (sscanf(argv[1],"%lf%1s", &numerator, dummy) != 1) {
printf("%s is not a valid input\n", argv[1]);
return 1;
}
...
sscanf(argv[2],"%lf", &denominator);

%1s 输入后只允许空白字符(主要是空格或换行符)

关于c - 我如何使用 sscanf 接受零作为输入,但不接受非数字输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39815699/

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