我对编程非常陌生,正在尝试仅使用数字制作一款基本的美式轮盘游戏,棋盘上出现的一个数字是“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 和整数,0
和00
是无法区分的。正如 @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/