입력받은 파라미터 argv[1]을 int a에 대입할수없나요????

xoduddk123의 이미지

프로그램을 만들고 있는데요

파라미터를 입력안받으면 10초동안 for문을 실행하고

파라미터를 입력받으면 입력받은 파라미터 숫자만큼 해당초동안 for문을 실행하려고하고있습니다.
int main(int argc, char* argv[]){

if(argc == 1){
a = 10;
printf(" a = %d\n",a);
printf(" AUTO = 10초 프로그램");
goto FOR;

}
a=(int)argv[0];
printf(" a= %d", a);

FOR:
for(i=0; i 내용
}

대충 이런식으로 프로그래밍을 했습니다 .

만약 파라미터가입력이 안되면 a=10을 대입하고 goto문을 이용하여 for문으로넘어가서 10초동안 실행하게 프로그래밍하였습니다.

만약 파라미터가 입력이되면 a=(int)argv[1]; 이렇게 정수 a에 파라미터를 대입해서 for문을 돌릴려고하는데 오류가 나서되지않습니다.

실행이 안되다기보다는 바로 아래의 printf문으로 a의 값을뽑아보면 -1090623546 이러한 값이 나와서 제 의도대로 프로그램이 돌아가지않습니다

이러한 경우에는 어떻게 처리를 해야하나요 ??

xoduddk123의 이미지

대충 이런식으로 프로그래밍을 했습니다 .

만약 파라미터가입력이 안되면 a=10을 대입하고 goto문을 이용하여 for문으로넘어가서 10초동안 실행하게 프로그래밍하였습니다.

만약 파라미터가 입력이되면 a=(int)argv[1]; 이렇게 정수 a에 파라미터를 대입해서 for문을 돌릴려고하는데 오류가 나서되지않습니다.

실행이 안되다기보다는 바로 아래의 printf문으로 a의 값을뽑아보면 -1090623546 이러한 값이 나와서 제 의도대로 프로그램이 돌아가지않습니다

이러한 경우에는 어떻게 처리를 해야하나요 ??

kukyakya의 이미지

argc를 이용해 인수의 개수를 확인하시면 됩니다.

xoduddk123의 이미지

argc는 입력받은 파라미터의 개수로 알고있습니다

만약에 제가 프로그램을

./a.out 50 으로 실행을 한다면

이 50이라는 숫자들 a에다가 집어넣어서 해당 숫자만큼 for문을 실행하고싶습니다.

kukyakya의 이미지

./a.out 는 파라미터가 입력이 안된 경우고, ./a.out 50 은 파라미터가 입력이 된 경우를 뜻하시는것 아닌가요?

다음과 같이 작성하시면 될 것 같습니다.

if(argc < 2) {
  a = 10;
}
else {
  a = atoi(argv[1]);
}

xoduddk123의 이미지

덕분에 프로그램이 잘 동작하는거같습니다

printf 문으로 a의 값을 출력해봐도 정상적으로 출력되는것을 보았습니다.

정말 감사합니다 !!!

익명 사용자의 이미지

a=(int)argv[0];

부분을

a = atoi(argv[1]);

로..