2013-05-01 1 views
1

나는 가장 기본적인 것을하려고하고 있고 벽돌 벽을 치고 있습니다. 나중에 프로그램에서 사용하기 위해 명령 줄에서 파일 이름을 읽으려고하는데 argv []에서 이름을 추출하는 것처럼 보이지 않습니다. 코드는 다음과 같습니다.char ** argv [] 명령 행에서 입력을 얻으려고 할 때 segfaults

#include <iostream> 
#include <string.h> 

using namespace std; 

int main(int argc, char **argv[]){ 
    cout << "argc = " << argc << "\n\n"; 
    cout << "Filename: " << argv[1] << "\n"; 
    return 0; 
} 

오류 검사가 없으므로 인수를 제공하는 입력에서 테스트 할 것입니다. 여기에 내가 프로그램을 실행할 때 내가 무엇을 얻을 :

./a.out testfilename 

*

argc = 2 

Filename: 0x7fff56e41d30 

가 지금은 ARGV [1] 문자의 배열에 대한 포인터 이해를, 그래서이 출력은 의미가 있습니다. 내가 [1] 실제 문자열을 꺼내 역 참조 변수는 argv에 시도에서 다음과 같이 변경,

cout << "Filename: " << argv[1] << "\n"; 

cout << "Filename: " << *argv[1] << "\n"; 

을 할 경우, 전 세그먼트 오류를 ​​얻을 ..

+0

가능 중복 (http://stackoverflow.com/questions/4207134/what-is-the -proper-of-main) –

답변

5
int main(int argc, char *argv[]){ 

또는

int main(int argc, char **argv){ 

BU t는

int main(int argc, char **argv[]){ 
+0

이것을 정리해 주셔서 감사합니다. 자신을 알아 채지 못했을 것입니다. 이제 잘 작동합니다. –

0

같아야하지 않도록 [? 메인 적절한 선언 란]

int main(int argc, char *argv[]) 
         ^only one * here 
관련 문제