C의 파일에서 마지막 줄을 삭제하면 빈 줄이 생성됩니다.

미덕

텍스트 파일에서 주어진 줄을 삭제하고 싶기 때문에 삭제하려는 줄을 제외한 모든 줄을 쓰는 임시 파일을 사용합니다.

파일의 마지막 줄을 제외하고는 모든 것이 괜찮습니다. 마지막 줄을 삭제하고 싶을 때 결과는 삭제 된 줄 대신 빈 줄이지 만 아무것도 없어야하고 빈 줄이 없어야합니다.

char line[255];
unsigned int countline=0;
unsigned int linetodelete;//fixed by the user

FILE *file=fopen(filename,"r");
FILE *filetemp=fopen("__tempfile__","w");

while(fgets(line,255,file)!=NULL){
    if(countline!=linetodelete)
        fputs(line,filetemp);
    countline++;
}

fclose(file);
fclose(filetemp);

file=fopen(filename,"w");
filetemp=fopen("__tempfile__","r");

while(fgets(line,255,filetemp)!=NULL)
    fputs(line,file);

fclose(file);
fclose(filetemp);
remove("__tempfile__");

파일 예 : (파일에서 볼 수있는 내용을 설명하기 위해 줄 번호를 추가합니다.)

000 line0
001 line1
002 line2

라인 1 (001) 삭제를 요청할 때의 결과 :

000 line0
001 line2

2 행 삭제 요청 결과 (002) :

000 line0
001 line1
002

빈 줄이 보이십니까? 왜 이런거야 ? 그것을 다루는 방법? 감사

편집 : 정밀도

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

void deleteline(const char *filename,unsigned int linetodelete){
    FILE *file=fopen(filename,"r");
    FILE *filetemp=fopen("__tempfile__","w");

    char line[255];
    unsigned int countline=0;

    while(fgets(line,255,file)!=NULL){
        if(countline!=linetodelete)
            fputs(line,filetemp);
        countline++;
    }
    fclose(file);
    fclose(filetemp);
    rename("__tempfile__",filename);
}
void print(const char *filename){
    FILE *file=fopen(filename,"r");

    char line[255];
    unsigned int countline=0;

    while(fgets(line,255,file)!=NULL){
        printf("%03d ", countline);
        printf("%s",line);
        countline++;
    }
    printf("\r\n");
    fclose(file);
}
int main(){
    printf("before\n");
    print("test.txt");
    deleteline("test.txt",2);
    printf("after\n");
    print("test.txt");
}

전에:

cat -n test.txt 
1   line0 
2   line1 
3   line2

후:

cat -n test.txt
1   line0 
2   line1 

내 파일 편집기에서 얻은 내용은 다음과 같습니다.

http://imgur.com/8Wbiwk2

용어 :

http://imgur.com/WGNSmgf

자비스

이 처리 방법을 사용할 수 있습니다.

if(countline!=linetodelete){
    char *p = line;
    p[strlen(p)-1] = 0;
    if(countline == 0){
        fprintf(filetemp, "%s", p);
    }
    else{
        fprintf(filetemp, "\n%s", p);
    }
}

이렇게하면 파일 끝에서 빈 줄을 피할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

빈 줄을 제외하고 줄의 마지막 문자를 찾습니다.

분류에서Dev

Java의 텍스트 파일에서 마지막 두 줄을 제거하려면 어떻게해야합니까?

분류에서Dev

awk에서만 파일의 마지막 줄을 인쇄 한 다음 파일의 첫 줄을 인쇄하는 방법이 있습니까?

분류에서Dev

gz 파일의 마지막 줄 삭제

분류에서Dev

sed를 사용하여 첫 번째 빈 줄과 마지막 줄 사이의 줄을 표시하려면 어떻게해야합니까?

분류에서Dev

Excel에서 높이를 줄일 때 셀의 마지막 줄을 표시하는 방법이 있습니까?

분류에서Dev

Buffered Reader 및 Writer를 사용하여 텍스트 파일에서 빈 줄 제거 그러나 나는 항상 마지막 줄을 비워 둡니다.

분류에서Dev

파일에서 마지막 줄 삭제

분류에서Dev

마지막 줄을 제외한 파일의 모든 줄에서 쉼표를 삭제하는 방법은 무엇입니까?

분류에서Dev

C #을 사용하여 URL에서 파일의 마지막 줄만 다운로드하려는 경우

분류에서Dev

파이썬 사전을 생성하면 이터 러블의 마지막 값만 저장됩니다.

분류에서Dev

디렉토리에서 모든 파일의 마지막 줄을 제거하는 방법은 무엇입니까?

분류에서Dev

PHP에서 파일의 마지막 10 줄을 반환하는 문제

분류에서Dev

파일의 세 번째 줄마다 마지막 열을 삭제해야합니다.

분류에서Dev

bash에서 두 개의 다른 파일에서 마지막 줄을 비교하는 짧고 빠른 방법?

분류에서Dev

해당 줄에 텍스트를 추가하기 위해 파일의 마지막 줄에서 줄 바꿈을 어떻게 제거합니까?

분류에서Dev

Bash 스크립트 : sed의 변수를 사용하여 파일의 마지막 "x"줄을 제외한 모든 줄을 삭제합니다.

분류에서Dev

cut을 사용하여 파일의 모든 줄에서 마지막 N 문자를 인쇄합니다.

분류에서Dev

파일의 모든 줄 (마지막 줄 제외)을 내보내 AWK를 사용하여 각 줄에 대한 새 파일을 만듭니다.

분류에서Dev

Linux에서 파일의 마지막 두 번째 줄을 인쇄합니다.

분류에서Dev

sed는 많은 파일의 첫 번째와 마지막 줄을 제외한 모든 것을 삭제합니다.

분류에서Dev

vim에서 마지막 빈 줄을 제거하는 방법은 무엇입니까?

분류에서Dev

파일의 각 줄에서 숫자를 곱하면 마이너스 값이 제공됩니다.

분류에서Dev

마지막 줄을 제외한 텍스트 파일의 각 줄에 && \ 추가

분류에서Dev

텍스트 파일이 있고 첫 번째 빈 줄을 삭제 한 다음 두 번째 빈 줄 뒤의 모든 텍스트를 삭제해야합니다.

분류에서Dev

C-마지막 줄에서 파일 문제 읽기

분류에서Dev

C ++ 파일에서 읽기-파일의 첫 줄을 건너 뛰고 마지막 줄이 두 번 반복됨

분류에서Dev

파이썬에서 파일의 마지막 줄에 쓰기

분류에서Dev

서식있는 텍스트 상자의 마지막 줄을 삭제 하시겠습니까?

Related 관련 기사

  1. 1

    빈 줄을 제외하고 줄의 마지막 문자를 찾습니다.

  2. 2

    Java의 텍스트 파일에서 마지막 두 줄을 제거하려면 어떻게해야합니까?

  3. 3

    awk에서만 파일의 마지막 줄을 인쇄 한 다음 파일의 첫 줄을 인쇄하는 방법이 있습니까?

  4. 4

    gz 파일의 마지막 줄 삭제

  5. 5

    sed를 사용하여 첫 번째 빈 줄과 마지막 줄 사이의 줄을 표시하려면 어떻게해야합니까?

  6. 6

    Excel에서 높이를 줄일 때 셀의 마지막 줄을 표시하는 방법이 있습니까?

  7. 7

    Buffered Reader 및 Writer를 사용하여 텍스트 파일에서 빈 줄 제거 그러나 나는 항상 마지막 줄을 비워 둡니다.

  8. 8

    파일에서 마지막 줄 삭제

  9. 9

    마지막 줄을 제외한 파일의 모든 줄에서 쉼표를 삭제하는 방법은 무엇입니까?

  10. 10

    C #을 사용하여 URL에서 파일의 마지막 줄만 다운로드하려는 경우

  11. 11

    파이썬 사전을 생성하면 이터 러블의 마지막 값만 저장됩니다.

  12. 12

    디렉토리에서 모든 파일의 마지막 줄을 제거하는 방법은 무엇입니까?

  13. 13

    PHP에서 파일의 마지막 10 줄을 반환하는 문제

  14. 14

    파일의 세 번째 줄마다 마지막 열을 삭제해야합니다.

  15. 15

    bash에서 두 개의 다른 파일에서 마지막 줄을 비교하는 짧고 빠른 방법?

  16. 16

    해당 줄에 텍스트를 추가하기 위해 파일의 마지막 줄에서 줄 바꿈을 어떻게 제거합니까?

  17. 17

    Bash 스크립트 : sed의 변수를 사용하여 파일의 마지막 "x"줄을 제외한 모든 줄을 삭제합니다.

  18. 18

    cut을 사용하여 파일의 모든 줄에서 마지막 N 문자를 인쇄합니다.

  19. 19

    파일의 모든 줄 (마지막 줄 제외)을 내보내 AWK를 사용하여 각 줄에 대한 새 파일을 만듭니다.

  20. 20

    Linux에서 파일의 마지막 두 번째 줄을 인쇄합니다.

  21. 21

    sed는 많은 파일의 첫 번째와 마지막 줄을 제외한 모든 것을 삭제합니다.

  22. 22

    vim에서 마지막 빈 줄을 제거하는 방법은 무엇입니까?

  23. 23

    파일의 각 줄에서 숫자를 곱하면 마이너스 값이 제공됩니다.

  24. 24

    마지막 줄을 제외한 텍스트 파일의 각 줄에 && \ 추가

  25. 25

    텍스트 파일이 있고 첫 번째 빈 줄을 삭제 한 다음 두 번째 빈 줄 뒤의 모든 텍스트를 삭제해야합니다.

  26. 26

    C-마지막 줄에서 파일 문제 읽기

  27. 27

    C ++ 파일에서 읽기-파일의 첫 줄을 건너 뛰고 마지막 줄이 두 번 반복됨

  28. 28

    파이썬에서 파일의 마지막 줄에 쓰기

  29. 29

    서식있는 텍스트 상자의 마지막 줄을 삭제 하시겠습니까?

뜨겁다태그

보관