【发布时间】:2016-10-22 18:49:37
【问题描述】:
所以我知道这是一个很长的标题,但我会试着把它分解一下。
我正在尝试创建一个 C 程序,它将在此之前从 .txt 文件中读取不确定数量的整数(假设该文件仅包含整数,并且每个整数由一个新行分隔)将每一个转换为二进制形式,然后将其导出到屏幕上。
我正在尝试逐步创建程序,到目前为止,我已经设法创建了一个转换为二进制的程序,但只能从单个用户输入的整数(参见下面的代码)。
#include<stdio.h>
int main(){
long int integerInput,quotient;
int binaryNumber[100],i=1,j;
printf("Enter any integer: ");
scanf("%ld",&integerInput);
quotient = integerInput;
while(quotient!=0){
binaryNumber[i++]= quotient % 2;
quotient = quotient / 2;
}
printf("Equivalent binary value of integer %d: ",integerInput);
for(j = i -1 ;j> 0;j--)
printf("%d",binaryNumber[j]);
return 0;
}
我真的不确定如何有效地读取数字并一一转换。我在包含 10 个不同整数的测试文件上尝试了如下所示的 for 循环(我已声明此文件并使用必要的文件 I/O 打开它)。
我尝试使用 for 循环编辑上述代码,但这似乎没有帮助 - 它只是生成随机序列。
for(k=0;k<10;k++)
{
fscanf(test, "%d", &decimalNumber);
.... // rest of above code is inserted here, minus the scanf and prompts for user to enter a number
return 0;
}
非常感谢任何帮助!
【问题讨论】:
-
在 fscanf 之后得到的结果是什么?尝试在 scanf 之后添加 printf 以显示您读取的值。并验证文件的结构。
-
张贴整个有问题的
main而不是描述它有助于避免一连串的“你做了这个”和“你做了那个”。 -
您发布的代码运行良好。而不是描述不起作用的代码发布它。
-
while循环应该是do...while循环,否则0的值不会被转换。 -
binaryNumber数组应初始化为零,因此如果您希望填充到特定宽度,也可以轻松显示前导零,这对于二进制表示很常见。此外,第一个元素被浪费了,因为索引从i=1开始。因为i和j是有符号类型,所以从0 开始索引并允许在下降的for循环的终止条件中等于0。并显示不工作的完整代码!