我正在做一个切换案例,其中案例值必须是二进制数字,如01,010,0100,0,00,000,
,依此类推。
switch(Code)
{
case 0:
{
printf("A");
break;
}
case 00:
{
printf("B");
break;
}
case 000:
{
printf("C");
break;
}
我知道如果我输入000,它将被存储为0.我的问题是你如何输入000以便我可以获得printf("C")
答案 0 :(得分:3)
我无法想象为什么你想要区分这些数字,因为在任何表示中它们都是相同的数字,但我想你必须将它们作为字符串来检查。 你不能把字符串放在C语言的switch语句中,所以你只需要有一系列if / else语句:
void selectString(char *input)
{
if(strcmp(input, "0") == 0)
{
printf("A");
}
else if(strcmp(input, "00") == 0)
{
printf("B");
}
else if(strcmp(input, "000") == 0)
{
printf("C");
}
}
话虽如此,你所要求的内容看起来非常像一个 XY问题,也就是说,你问的是如何做奇怪的事情,因为你认为你需要这样做来解决X.你想做什么?
答案 1 :(得分:3)
您的问题是您有一系列要尝试解码的位(线路上的信号)。但是你不知道你的信息包何时开始。你在编码中缺少的是一封信的开头。 (你也没有开头的话,我建议用一个未使用的数字来表示单词之间的空格。)
在你的程序中会建议为每个比特序列添加1个起始位(注意这实际上并没有传输,但由于没有任何传输的持续时间而暗示)。然后您的值为10,100和1000.您可以轻松地以二进制表示形式比较这些值。注意,最小的有效位系列是字母'e',它是10的二进制。单个1位不是有效值。只需看一眼Morse code entry here,就会看到字母表形成一个编号系统,可以存储在查找表中以便快速实现。
答案 2 :(得分:0)
鉴于你在变量中使用这个莫尔斯(我猜0 = Dot,1 =破折号)。 “代码”必须是字符串。
switch(Code)
{
case "01": //".-"
printf("A");
break;
case "100": //"-.."
printf("B");
break;
case "0001": //"...-"
printf("V");
break;
}