[英]string in binary format to integer
我正在尝试将包含二进制的16位数字的字符串转换为整数值。 这是一项家庭作业,我必须使用scanf(“%1d ....)。我遇到的问题是循环不会结束,我不知道如何解决它。
例如:输入:0000000000001111
输出:15
int read_binary_value()
{
int value = 0;
while( scanf("%1d", &value) == 1)
{
printf("%d ", value);
if (value == 1)
{
value += 1;
value << 1;
}
}
printf("yoyoyoyoyoyoyo");
printf("%d",value);
return value;
}
我修改了您的代码,它可以正常工作
int read_binary_value()
{
int total=0;
int value;
while( scanf("%1d", &value) == 1)
{
printf("%d", value);
if(!(value==0||value==1))
{
//Generate Error Message and Exit program
}
total = total << 1;
if (value == 1)
{
total += 1;
}
}
printf("yoyoyoyoyoyoyo\n");
printf("%d",total);
return total;
}
当文件结束时,循环停止。 对于Windows,请按CTRL + Z ,对于Linux,请按Ctrl + D 。 这些是文件结尾字符。
如果要获得16个输入,则可以使用for(i=0;i<16;i++)
来代替, while
只需要运行16次循环并结束。 否则在while
循环中,您可以让if(i==16) break;
在循环结束时递增i
。 如果您需要手动停止循环,则可以选择EOF
char。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.