2013-09-05 4 views
1

현재 아무 것도 출력하지 않습니다. 이 프로그램은 정수 명령 행 값을 취한 다음 재귀 인쇄 기능을 사용하여 해당 횟수만큼 "Test"를 인쇄합니다. 나는 C 언어를 처음 사용하기 때문에 프로그램이 작동하지 않는 이유를 알 수 없으며 컴파일 오류도 발생하지 않습니다. (스틸 GDB 익숙해 작업)C의 재귀 인쇄 기능

당신이 int로 전달되지 않기 때문에
#include <stdio.h> 

void myfunc(int num) 
{ 
    if(num <= 0) 
    { 
     return; 
    } 
    else 
    { 
     printf("%s \n", "Test"); 
     myfunc(num-1); 
     return; 
    } 
} 

int main (int argc, char *argv[]) 
{ 
    int i; 
    i = atoi(argv[0]); 
    myfunc(i); 
} 

답변

6

:

i = atoi(argv[0]); 
      ^
      argument 0 is name of executable 

가 원하는 일 수 있습니다

i = atoi(argv[1]); 
+0

나는 그것이 그렇게 간단한 것임을 알았다. 고맙습니다. – CODe

+0

@CODe 환영합니다. –

+0

실제로 atoi()에 UB가 있습니까? 오버플로시 정의되지 않은 * 값 *을 반환하는 것 외에는? – Medinoc

2

argv[0]는 실행 파일의 이름을 보관을, 실행 파일을 실행할 때 :

program.out 1 2 

argv[0] will be "program.out", (they are all strings) 
argv[1] will be "1", 
and argv[2] will be "2". 

그냥 완료하려면 argv는 argv에있는 요소의 수를 보유 할 것이므로이 경우 argc will be 3 (integer 3, not string"3").

+0

좀 더 자세한 정보를 가져 주셔서 감사합니다. – CODe

+0

@CODe 그리고 zubergu의 예'argv [3]'='NULL' (argc는 3이므로)에있는'argv [argc]'. –