c - 使用scanf()读取 "00"

标签 c scanf

我对编程非常陌生,正在尝试仅使用数字制作一款基本的美式轮盘游戏,棋盘上出现的一个数字是“00”,我正在尝试将“00”分配给结构中的变量数组,我不知道如何执行这个特定的数字,因为它读取为“0”。这是我用来设置它的代码,对于这个可能非常愚蠢的问题感到抱歉,但我已经搜索了几个小时,只出现了我无法理解的极其复杂的答案(尽管我已经尝试过) )。由于我根据请求使用的非常基本的编译器,因此输入需要一次读取,这样输入将是“number number number number number number number”。

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

int main( void )
{
    struct bet /* Setting up a structure array to store input values */
    {
        float number;
        float betValue;
    } playerBet[4];

    scanf("%f %f %f %f %f %f %f %f", &playerBet[0].number, &playerBet[0].betValue, &playerBet[1].number, &playerBet[1].betValue,&playerBet[2].number, &playerBet[2].betValue,&playerBet[3].number, &playerBet[3].betValue);
}

任何帮助将不胜感激!

最佳答案

对于 float 和整数,000是无法区分的。正如 @Weather Vane 在评论中指出的那样,您可以使用 sentinel value来区分双零。您还可以将每个数据点作为字符串输入(因为“0”和“00”在解释为字符数组时会被区分为不同的)。

对于这类简单的小项目(可能还有作业问题),您可以使用 atoi()将字符串转换为数值以解析您的输入。

您可能应该使用整数在内部对数据进行建模。这将确保您在检查输入的偶数或奇数时不会遇到问题。您的数据结构似乎不需要对 float 据进行建模。

示例

使您的结构元素number为整数,betValue浮点:

int number;
float betValue;

输入数字作为字符串并解析它:

char input_number[3]; // 2 spaces plus null terminator
int number;           // numeric version (after parsing)
float bet_value;      // float value for bet
scanf("%s %f", input_number, &bet_value);
if (input_number[0] == '0' && input_number[1] == '0') {
    number = 37;
} else {
    number = atoi(input_number);
}
// Assign them to structure
playerBet[0].number = number;
playerBet[0].betValue = bet_value;

关于c - 使用scanf()读取 "00",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119624/

相关文章:

c - 如何将线程分配给C中的不同内核?

c - 莫尔斯电码(数组方法)代码C语言

c - 从文件中读取整数并忽略 C 中的空格

c - 如何从 AT CMGL 响应中检索电话号码?

c - 如何停止读取输入并分析C中的数据

c - 如何使具有多个输入的 scanf() 忽略其他输入?

CLOCK_MONOTONIC 与 CLOCK_MONOTONIC_RAW 截断值

c - getchar() 会导致错误,而 scanf 不会

c函数充当指针?

c - 在 while 循环中使用 scanf 函数