그래서 두 개의 인수가 정수가되는 프로그램을 만드는 작업이 있습니다. 그 정수를 이진 값으로 변환 한 다음 가장 중요한 "1"비트의 위치를 출력해야합니다. 아래는 현재 정수를 2 진수로 성공적으로 변환 한 코드입니다. 나는 이진 값으로 배열을 채운 다음 마지막 위치에서 순환하고 "1"을 만날 때까지 카운터를 감소시키고 그 다음에 현재 위치에서 배열의 전체 길이를 빼서 그 비트의 위치를 인쇄하려고합니다. 배열배열에 이진 값을 채우고 최하위 비트를 확인하려고합니다.
#include <stdio.h>
#include <stdlib.h>
int convert(int);
int main(int argc, char *argv[])
{
int bin;
int n = atoi(argv[2]);
if (argc<2)
{
printf("\nNot Enough Arguments.");
}
if (argc>2)
{
printf("\nToo Many Arguments.");
}
if (argc==2)
{
scanf("%d", &n);
bin = convert(n);
lessbit[] = bin;
}
return 0;
}
int convert(int n)
{
if (n == 0)
{
return 0;
}
else
{
return (n % 2 + 10 * convert(n/2));
}
}
'int n = atoi (argv [2]);'나는 여기서 읽기를 멈췄다. 'argc'의 값을 검사하기 전에'argv [2]'를 사용합니까? 그것은 단지 문제를 요구하고 있습니다. 또한 명백한 것을 추가해야합니다 : int는 이미 바이너리입니다. – John3136
@ J.Clark 정수는 이미 바이너리 형식으로 저장되어 있습니다. –
BTW'argv'를 사용하기 전에'argc' 검사가 필요합니다. 'lessbit [] = bin;':'lessbit'? – BLUEPIXY