질문과 답변

소프트웨어 TRIM C코드 도움이 필요합니다

2021.08.26 16:45

실시간 조회:166

답변해주시는 분에게 미리 감사인사 드립니다

 

파일 뒤에 .C로 끝나서 C코드가 아닐까 싶은데 아니면 아닌대로 넘어가주세요

 

여기 이 trim.c 파일을 메모장으로 열었더니 

 

이렇게 나오는데 여기서 말하는 유니코드에 8, 16BE, LE 모두 포함인가요?

 

혹시 일부 유니코드만 지원하는거면 모든 유니코드로 적용하게 바꾸는 방법 좀 부탁드립니다 

 

 

 

#include <dirent.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h> 

 

int RemoveSpace(char *filename);

 

int main(int argc, char* argv[]) {

 

if(argc == 1) {

 

DIR* dirp = opendir(".");

 

while (dirp) {

struct dirent* dp = NULL;

if ((dp = readdir(dirp)) != NULL) {

 

if(NULL != strstr(dp->d_name,".txt")) RemoveSpace(dp->d_name);

}

else 

{

closedir(dirp);

break;

}

}

  

puts("Modification Complete.");

return 0;

}

else if(argc == 2) {

RemoveSpace(argv[1]);

puts("Modification Complete.");

return 0;

}

else if(argc > 2) 

{

puts("Either run it without a filename to modify all the text files in the folder, or enter one filename of the text to be modified. eg) trim.exe test.txt");

return 1;

}

 

 

}

 

int RemoveSpace(char *filename) {

 

FILE *fp;       // 파일

    char *buffer;   // 파일의 내용을 담을 버퍼의 포인터

    char *tar_buffer;   // 파일의 내용을 담을 버퍼의 포인터

    long fsize;     // 파일 크기를 저장할 변수

long tar_index;

 

    if((fp = fopen(filename, "rb")) == NULL) {    // 입력 파일 열기(텍스트 모드)

        puts("File not found!\n");

        return 1;

        }

 

// 파일의 크기를 구함

 

    fseek(fp, 0, SEEK_END);         // 파일포인터를 파일의 끝으로 이동

    fsize = ftell(fp);              // 현재 파일포인터를 읽으면 파일크기가 됨

    fseek(fp, 0, SEEK_SET);         // 파일포인터를 다시 파일의 맨 처음으로 이동

 

// 버퍼를 준비함

    buffer = (char*)malloc(fsize + 10);  // 파일의 내용을 담을 버퍼를 할당

tar_buffer = (char*)malloc(fsize + 10);

 

// 파일을 읽음

    fsize = fread(buffer, 1, fsize, fp);    // 파일을 한번에 읽음

                // \r\n의 변화가 있을 것이므로 fsize값을 갱신함

    fclose(fp);                     // 파일 닫음

    buffer[fsize] = '\0';           // 문자열로 간주할 수 있게 마지막에 '\0'을 넣음

tar_buffer[fsize] = '\0';

tar_index = 0;

 

  for(int i=0;i<=fsize;i++) {

 

//개행문자(0D0A) 사이에 있는 빈 칸 문자는 다 지운다. 

if(i+1 <= fsize && buffer[i] == 0x0D && buffer[i+1] == 0x0A) {

 

do{

tar_buffer[tar_index++] = buffer[i++];

tar_buffer[tar_index++] = buffer[i++];

}while(i+1 <= fsize && buffer[i] == 0x0D && buffer[i+1] == 0x0A);

 

while(1){

//이놈이 0xE3이 아니라 0xffffffE3라서 삽질함

//유니코드 빈 칸 문자 지우기

if(i+2 <= fsize && buffer[i] == 0xffffffE3 && buffer[i+1] == 0xffffff80 && buffer[i+2] == 0xffffff80) {

i=i+3;

}

//아스키코드 빈 칸 문자 지우기

else if(buffer[i] == 0x20) {

i=i+1;

}

// 딴 문자 나오면 안 지우고 나가봅니다.

else break;

}

}

tar_buffer[tar_index++] = buffer[i];

  }

 

// 출력 파일 생성 및 저장

 

    if((fp = fopen(filename, "wb")) == NULL) {   // 출력 파일 생성(텍스트 모드)

        puts("File cannot create!\n");

        free(buffer);               // 할당한 버퍼를 해제

        free(tar_buffer);               

        return 1;

        }

    fwrite(tar_buffer, 1, tar_index, fp);   // 내용을 한번에 파일로 출력

    fclose(fp);                     // 파일 닫음

 

    free(buffer);                   

    free(tar_buffer);               

return 0;

}

 

 

추신. 이 파일은 2016년도에 어떤 경로로 배포됐던 공백 없애는 유틸리티라고 받았습니다

번호 제목 글쓴이 조회 등록일
[공지] 질문과 답변 게시판 이용간 유의사항 gooddew - -
6054 윈 도 우| 윈도우 업데이트 통합 시 지연된 작업을 진행시켜놓을 수 ... [4] 오목눈이 263 08-25
6053 소프트웨어| 오토핫키 관리자 권한과 일반 권한에서 실행시 차이를 알 ... [3] 천공의아키 263 02-23
6052 윈 도 우| 얼마전 Windows11 속성 질문 올리신 분 해결안되셨으면 쪽... sadold 263 02-02
6051 윈 도 우| EISA(OEM)파티션하고 숨김 파티션하고 다른건가요? [3] 바수 263 01-30
6050 기 타| 온라인 강의 중 QR 코드 관련 [3] 일신우일신 263 08-31
6049 기 타| 큰나무님 문의드립니다 [3] 마쉽 263 10-26
6048 윈 도 우| 목록 관리 프록램 이름이 뭐죠? [2] 슈머슈마 263 10-03
6047 윈 도 우| PE에서 글꼴깨짐 현상 [1] 에세3밀리 263 09-22
6046 윈 도 우| 즐겨찾기 폴더 이름바꾸는 법 [2] 컴알못러 263 09-15
6045 소프트웨어| 유튜브를 앱이 아니라 크롬에서 열게 설정했는데도 앱으로 ... [4] 사가르마타 263 02-27
6044 소프트웨어| AnyDesk 사용시 문의 asklee 263 07-29
6043 윈 도 우| 시스템복원 오류 [1] 단디™ 263 12-21
6042 기 타| 게시판에 유튜브영상 링크 걸 때 [3] lakeside 263 04-30
6041 윈 도 우| 윈도우PE 사운드 카드질문드립니다. [2] km5623 263 06-11
6040 윈 도 우| QuantumPE Admin 에서 부팅 후 상태?를 저장할 수는 없을까요? [2] 귀여운나 263 02-19
6039 소프트웨어| band in a box 구할수 있나요? [2] 미리내2013 263 03-23
6038 하드웨어| 라데온 그래픽카드인데 WIN1064 .32BIT 드라이버 있는지요 [4] 바다속에고래 263 03-05
6037 윈 도 우| 윈도우 업데이터 이후 사진 중간부분 백지화 증상 [1] 보문맨 263 03-15
6036 소프트웨어| [AutoHotKey] 오토핫키 고수분에게 질문합니다. [9] AutoMP3 263 03-22
6035 윈 도 우| 윈도우 업데이트 후에 마우스문제 일산촌놈 263 01-14
XE1.11.6 Layout1.4.8