C 입문 플러스 5 판을 읽고 I/O 장에 있습니다. 몇 가지 일을하는 예제 (451 페이지)를 생각해 내고 어떤 시점에서 기존 파일 다음에 .red 결말이 붙은 새 파일을 만듭니다. 예를 들어이 파일이 "test"이면 프로그램은 "test.red"를 만듭니다. 나는 다음을 이해할 수 없다.다른 파일과 같은 이름의 파일 이름을 지정하십시오.
char name[LEN];
//some code...
strncpy(name,argv[1], LEN - 5);
name[LEN - 5] = '\0';
strcat(name,".red");
나는 명령 strcpy의 정의를 보았다. arv [1] (소스 파일이 들어있는)의 첫 번째 LEN-5 문자를 이름에 복사합니다. strcat 명령은 .red를 끝에 추가합니다. 그러나, 나는이 name[LEN - 5] = '\0';
의 존재를 이해할 수 없다. 나는 그것을 제거하고 프로그램은 여전히 잘 작동한다.
편집
내가
출력 파일의 새 이름을 구성하기 ...이 라인이 책에서 코멘트를 게시, 프로그램은 배열 이름에 이름을 소용돌이 복사 를 strncpy()를 사용합니다. LEN - 5 인수는 .red 접미사와 최종 null 문자를위한 공간을 남겨 둡니다. argv [2] 문자열이 LEN- 5보다 길면 널 문자가 복사되지 않으므로 프로그램이 null 문자를 추가합니다. strncpy() 호출 후 첫 번째 null 문자의 문자는 마침표로 덮어 씁니다. strcat() 함수가 해당 문자열을 추가 할 때 이 경우에는 eddy.red입니다.
알기! 고맙습니다! – yaylitzis