programing

C에서 파일을 잘라내는 방법

goodsources 2022. 7. 17. 18:19
반응형

C에서 파일을 잘라내는 방법

파일에 데이터를 쓸 때 C를 사용하고 있어요.지금 쓰고 있는 것보다 더 길 경우 파일에 적혀 있던 이전 텍스트를 지우고 싶습니다.파일 크기를 줄이거나 끝까지 잘라내고 싶습니다.이거 어떻게 해?

파일의 이전 내용을 일정 길이(다른 응답에 의해 제공되는 0보다 큰 길이)까지 보존하는 경우 POSIX는 및 기능을 제공합니다.

#include <unistd.h>
int ftruncate(int fildes, off_t length);
int truncate(const char *path, off_t length);

이름은 파일 단축이라는 주요 목적을 나타냅니다.그러나 지정된 길이가 이전 길이보다 길면 파일이 새 크기로 커집니다(패딩 없음).주의:ftruncate()파일 디스크립터로 동작합니다.FILE *; 다음을 사용할 수 있습니다.

if (ftruncate(fileno(fp), new_length) != 0) ...error handling...

다만, 파일 스트림이 혼재하고 있는 것에 주의해 주세요.FILE *및 파일 기술자(int)는, 1개의 파일에의 액세스에 의해서 혼란이 생기기 쉽습니다.일부 문제에 대해서는, 코멘트를 참조해 주세요.이것이 최후의 수단이어야 한다.

다만, 오픈시에 잘라내는 것만으로 충분할 가능성이 있습니다.그러기 위해서는 다른 사용자가 제공하는 옵션으로 충분합니다.


Windows의 경우 유사한 작업을 수행할 수 있지만 다른 인터페이스를 사용하는 기능 및 관련 기능이 있습니다.기본적으로 파일의 끝을 설정하고 싶은 곳을 검색한 후 함수를 호출합니다.

또 다른 기능이 있습니다._chsize()sofr답변에 기재되어 있는 바와 같이

이것은, operating system의 기능입니다.POSIX의 표준 방법은 다음과 같습니다.

open("file", O_TRUNC | O_WRONLY);

Windows 시스템에서는 헤더가 없습니다.<unistd.h>그러나 파일을 잘라낼 수 있습니다.

 _chsize( fileno(f), size);

이것이 UNIX의 일부 플레이버로 동작하는 경우 다음 API를 사용할 수 있어야 합니다.

   #include <unistd.h>
   #include <sys/types.h>

   int truncate(const char *path, off_t length);
   int ftruncate(int fd, off_t length);

Linux 박스의 "man truncate"에 따르면 POSIX에 준거하고 있습니다.이러한 콜은, 현재의 길이보다 긴 길이를 넘으면, 실제로 파일(!)의 사이즈가 커지는 것에 주의해 주세요.

<편집>

아, 당신이 글을 편집했군요, 당신은 C를 사용하고 있군요.파일을 열 때 다음과 같이 "w+" 모드로 엽니다. 그러면 파일을 잘라서 쓸 수 있습니다.

FILE* f = fopen("C:\\gabehabe.txt", "w+");
fclose(file);

</편집>

C++에서 파일을 잘라내려면 ios_base::trunc를 파일모드로 사용하여 파일에 대해 다음과 같이 ofstream 객체를 작성합니다.

ofstream x("C:\\gabehabe.txt", ios_base::trunc);

전체 파일을 잘라내려면 쓰기 위해 파일을 열면 됩니다.그렇지 않으면 파일을 읽기 위해 열고 임시 변수로 유지할 파일의 일부를 읽은 다음 필요한 위치에 출력해야 합니다.

전체 파일 잘라내기:

FILE *file = fopen("filename.txt", "w"); //automatically clears the entire file for you.

파일의 일부를 잘라냅니다.

FILE *inFile("filename.txt", "r");
//read in the data you want to keep
fclose(inFile);
FILE *outFile("filename.txt", "w");
//output back the data you want to keep into the file, or what you want to output.

언급URL : https://stackoverflow.com/questions/873454/how-to-truncate-a-file-in-c

반응형