프로그래밍 클래스의 linux에서 head 및 tail 명령을 다시 작성하려고합니다. 방금 C를 사용하기 시작 했으므로 메모리와 포인터를 할당하는 아이디어에 익숙하지 않습니다. 왜 이것이 작동하지 않는지 궁금합니다.C 기본 헤드 명령
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv){
/* Checks if correct amount of arguements */
if(argc != 2 || argc != 4){
printf("Usage: %s head <file> \n Or: head <file> -n <number of characters>", argv[0]);
exit(-1);
}
if(strcmp(argv[1], "-n" != 0)){
char fileName[strlen(argv[1])] = argv[1];
}
}
//Compile error on char fileName[strlen(argv[1])] = argv[1];
추가적인 통찰력이 도움이 될 것입니다.
'fileName'은 또한 그 둘러싸는 블럭 안에서만 볼 수 있습니다.이 경우에는'if' 문의 긍정 분기입니다. – gcbenison
'argc'가 2이면 4와 같지 않으며 4와 같지 않으면 2가 아니므로 사용법 메시지 만 보게됩니다. 2, 4, then ... –
GCC 커맨드 라인에서'-std = c99'를 지정 했습니까? VLA (가변 길이 배열)를 허용하도록 컴파일러를 얻으려면 여전히해야합니다. –