2014-11-24 2 views
1

1MB 파일을 생성하는 Linux 용 C 프로그램을 작성하려고하지만이 코드를 작동시킬 수 없습니다. 실행하려고 할 때 segault 오류 메시지가 표시되고 어디에서 잘못 될지 잘 모르겠습니다. 그래도 나는 fseek와 함께하는 직감을 가지고있다 :Linux에서 1MB 파일을 작성하고 분할 오류를 생성하는 C 프로그램 작성

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    FILE *fp; 
    fp = fopen(argv[0], "w"); 
    fseek(fp, 1000000 - 1, SEEK_SET); 
    fputc('\0', fp); 
    return 0; 
} 

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

+6

이미 언급했듯이, 당신은 argv [0] 대신에 argv [1]을 사용할 필요가있을 것이다. 그러나 인자가 제공되었는지 (if (argc == 2) 쓰기 전에 파일을 성공적으로 열 었는지 확인해야합니다 ('if (fp! = 0)'). 전체적으로 파일을 연 후에 파일을 닫아야합니다. 그것은'return' 문 앞에'fclose (fp);'없이 실제로 작동 할 것이지만, 여러분이 여는 문을 닫는 것이 더 좋은 스타일입니다. –

답변

7

argv[0]은 이진 파일의 이름입니다. 파일 이름에 argv[1]을 사용하고 싶습니다.

+1

와우, 고마워. 명령 줄 인수 (및 파일 IO)에 대한 자세한 내용을 읽어야 할 필요가 있다고 가정합니다. 빠른 답변 주셔서 감사합니다, 지금 작동합니다! 타이머 후 대답을 수락합니다. :) – DatapawWolf