2011-11-09 2 views
2

그래서이 질문은 정말로 기본적인 질문입니다. 할당을 위해 우리는 가상 주소의 페이지와 오프셋 번호를 계산하는 c 프로그램을 작성해야했습니다. 내 프로그램은 계산을하기로되어있는 가상 주소의 보컬 변수를 만들 때 잘 작동하는 것처럼 보이지만이를 전달하는 방법을 알 수는 없습니다. Easy : 터미널에서 C 프로그램으로 데이터 전달 (Mac)

할당

우리가 난 그냥 내 Mac에서 터미널에서이 19,982을 전달하는 방법을 알아낼 수 없습니다이

./program_name 19982 

처럼 우리의 프로그램을 실행해야한다고 말한다. 어떤 도움을 주셔서 감사합니다. (그리고 전에 누군가가 마약을합니다.)

+0

하드 코딩 된 변수를 만드는 대신 프로그램에서 숫자 19982를 사용하고 사용하는 방법을 알고 싶습니까? –

+0

맞습니다. 터미널에 입력 한 내용은 입니다.'gcc myprog.c'를 컴파일하려면 '/a.out'을 실행하십시오. 을 실행하지만 19982를 어디에 넣어야할지 모르겠습니다. 내 메인은 이미 인수를 허용하도록 설정했지만 터미널에서 전달하는 방법을 모르겠습니다. – solllodolllo

답변

4

argv을 찾고있는 것처럼 들리지만, 그게 무엇인지 모르는 경우 검색하기가 어렵습니다. 이것은 Mac OS X의 터미널에만 국한되지 않습니다.

main() 함수의 argv 인수는 문자열 배열입니다. 그 요소는 개별 명령 행 인수 문자열입니다.

실행되는 프로그램의 경로는 의 첫 번째 요소, 즉 argv[0]입니다.

argv의 요소 수는 argc에 저장되어

#include <stdio.h> 

int main(int argc, char* argv[]) 
{ 
    int arg; 
    for (arg = 0; arg < argc; ++arg) 
    { 
     printf("Arg %d is %s\n", arg, argv[arg]); 
    } 
    return 0; 
} 

컴파일

% gcc program_name.c -o program_name 

Run 일 : intargv[1] 변환

% ./program_name 19982 
Arg 0 is ./program_name 
Arg 1 is 19982 

는 운동으로 남겨을 .

1

일반적으로 main에 "argv/argc"를 사용합니다. 예를 들어 리눅스에서

#include<stdio.h> 

int 
main (int argc, char *argv[]) 
{ 
    if (argc < 2) 
    printf ("You didn't enter any arguments\n"); 
    else 
    printf ("Your first argument is %s\n", argv[1]); 
    return 0; 
} 

, 당신은 컴파일 것과 같이 실행

리눅스에서 다시
gcc -o hello hello.c 
./hello howdy! 

, 그것은이 같은 출력 뭔가 것 :

Your first argument is howdy! 
4

당신은 사용할 수 있습니다 프로그램의 인수에 액세스하려면 argcargv. argc은 전달 된 인수의 수인 "arguments count"입니다. argv은 "인수 벡터"이며, 첫 번째 구성원은 프로그램의 이름입니다.

#include <stdio.h> 
#include <stdlib.h> 
int main(int argc, char* argv[]) 
{ 
    int Address; 
    if (argc > 1) 
    { 
     Address = atoi(argv[1]); 
    } 
    else 
    { 
     printf("No arguments passed\n"); 
     return 1; 
    } 
    return 0; 
} 
+0

Errr ... 문자열을 int로 변환하지 못했습니다? –

+0

물론 :). 결정된. –

1

모든 C 프로그램 기능 main 자신의 실행을 시작 (및 C++는 목표 - C에 대해 알고하지 않습니다)가. 이 함수는 두 개의 인수를 취합니다. 일반적으로 프로그램에 주어진 인수의 수인 카운터 인 숫자는 argc입니다. 두 번째 함수 인수는 char 포인터의 배열이며 보통 argv이라고하며 실제 명령 줄 인수입니다.

argv의 첫 번째 항목은 argc 항상 적어도 1

다음 프로그램을 인쇄 수 있다는 것을 의미 명령 자체의 이름은 항상 명령 행에서 주어진 모든 인수 :

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    printf("Total number of values in argv: %d\n", argc); 
    for (int a = 0; a < argc; a++) 
     printf("argv[%02d]: %s\n", a, argv[a]); 
} 
관련 문제