input - 输出到脚本时终端使用什么编号系统
问题描述
我目前正在学习 C 编程,并编写了一个类似于我之前用 Python 编写的脚本。我的目标是学习如何将输入传递给应用程序并让它处理我传递给它的数据。
我现在遇到的问题是我的应用程序给我的反馈。我编写了一个简单的应用程序来读取键盘输入,并根据我给出的输入给出 3 个响应中的 1 个。代码如下:
/*Input test.*/
#include<stdio.h>
#include<stdlib.h>
char input;
const int option_a = 1;
const int option_b = 2;
int main()
{
printf("Lets get started! a for on or b for off?\n");
while(1)
{
input = getchar();
if(input == option_a)
{
printf("We're on.!\n");
}
else if(input == option_b)
{
printf("Off we go.\n");
}
else
{
printf("Excuse me, but I didn't get that.\n");
}
}
return 0;
}
简单地说 option_a 是我按下键盘上的 1 键,而 option_b 是键 2。当我按下这些键或任何键时,应用程序将始终转到决策树的“else”部分。话虽如此,我很清楚,我会说缺乏更好的术语/表达,我的应用程序没有将我的输入视为十进制数 1 或 2。
从终端,我发送到我的应用程序的数据结构是什么,或者简单地说,我的 1 或 2 “看起来”在我的应用程序中是什么样的?
解决方案
当你接受输入时,getchar()
你就会得到一个char
价值。但是您正在将其与整数进行比较。您可以将输入与相应的字符进行比较,而不是与整数进行比较。例如,使用
const char option_a = '1';
const char option_b = '2';
推荐阅读
- swift - ScrollView 导致 SwiftUI 中的按钮出现错误
- c# - 抽象泛型类的 IncludeBase 自动映射器映射失败
- argon2-ffi - 在 macbook 上安装节点 Argon2 时出现问题
- pandas - 水平表示而不是垂直表示的 csv 数据 - Python Pandas CSV
- javascript - Angular Material Paginator 在检索数据后不允许按下后退按钮
- symfony - 如何使 Symfony 表单中的 DateIntervalType 字段不需要
- reactjs - 将 reader.onload 中的字符串传递给父级
- string - 你如何在 Nim 中使用变量进行字符串插值?
- ros - ROS 控制和 Gazebo 的问题
- ruby-on-rails - X时间过去后如何使Ruby超时HTTP请求