2015-01-29 8 views
0

파일 이름으로 실행되는 프로그램을 만들고 있습니다.argv []에서 입력을 char로 변환 하시겠습니까?

예 :이 코드는 내가 지금까지 가지고있다

error: array type 'char [20]' is not assignable 

:

./program 나는 다음과 같은 오류에 어려움을 겪고

파일 이름 .txt

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main (int argc, char *argv[]) { 
    char filename[20]; 
    filename = argv[1]; 
} 

입력을 argv[]에서 문자 배열 t로 변환하는 방법 내가 가진 모자?

+6

이 C 또는 C++가 할당되지 않습니다? C++이라면'std :: string'을 사용하십시오. –

+0

왜 파일 이름으로'argv [1]'을 사용하지 않으시겠습니까? 그것을 바꿀 의향이 있습니까 ??? –

답변

1

배열은

사용

strcpy(filename, argv[1]); 
+3

아니요, 사용하지 마십시오. 이것은'argv [1]'이'filename'보다 더 길지 않도록 보호합니다. – hvd

+1

@hvd; 'strncpy'도 마찬가지입니다! – haccks

+0

@haccks 나는'strncpy'를 사용하지 않을 것을 제안했습니다. 그것은 사용될 수 있지만,가는 것이 최선의 방법은 아닙니다. 나는 일반적으로 비표준'strlcpy '를 좋아하는데, 이것은 그것을 가지고 있지 않은 시스템을 위해 이식 가능하게 쉽게 구현 될 수있다. (사실, 좀 더 생각해 보니, 여기에 할 일이 없다고 생각합니다. 파일 이름을 자르는 것이 좋지 않습니다. 고정 길이 버퍼가 필요하고 파일 이름이 맞지 않으면 오류가 발생합니다 .) – hvd