我希望这个程序能够从命令行读取指令。它是八进制的数字转换器 - >二进制和二进制 - >八进制。我不能在运行转换之前告诉它吗?例如./conv八进制二进制11将产生八进制3.我以前运行过linux程序./script输入输出。
#include <stdio.h>
#include <math.h>
int binary_octal(int n);
int octal_binary(int n);
int main()
{
int n;
char c;
printf("Instructions:\n");
printf("Enter alphabet 'o' to convert binary to octal.\n");
printf("2. Enter alphabet 'b' to convert octal to binary.\n");
scanf("%c",&c);
if ( c=='o' || c=='O')
{
printf("Enter a binary number: ");
scanf("%d",&n);
printf("%d in binary = %d in octal", n, binary_octal(n));
}
if ( c=='b' || c=='B')
{
printf("Enter a octal number: ");
scanf("%d",&n);
printf("%d in octal = %d in binary",n, octal_binary(n));
}
return 0;
}
int binary_octal(int n) /* Function to convert binary to octal. */
{
int octal=0, decimal=0, i=0;
while(n!=0)
{
decimal+=(n%10)*pow(2,i);
++i;
n/=10;
}
/*At this point, the decimal variable contains corresponding decimal value of binary number. */
i=1;
while (decimal!=0)
{
octal+=(decimal%8)*i;
decimal/=8;
i*=10;
}
return octal;
}
int octal_binary(int n) /* Function to convert octal to binary.*/
{
int decimal=0, binary=0, i=0;
while (n!=0)
{
decimal+=(n%10)*pow(8,i);
++i;
n/=10;
}
/* At this point, the decimal variable contains corresponding decimal value of that octal number. */
i=1;
while(decimal!=0)
{
binary+=(decimal%2)*i;
decimal/=2;
i*=10;
}
return binary;
}
答案 0 :(得分:3)
命令行选项通过main
和argc
传递给argv
。
int main(int argc, char** argv)
{
for(int i=0; i<argc; ++i)
{
printf("Option %d is %s\n", i, argv[i]);
}
}
尝试使用各种命令行参数运行这个迷你程序,你会很快发现它!