• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

소프트웨어

[App 개발] 질문... 파일입출력시 인코딩

본문

파일입출력을 할 때 그 파일의 인코딩이 무엇이든 그대로 유지하면서 숫자 부분만 바꾸려고 합니다.
간단한 자막 싱크 변환 프로그램인데요.
그냥 다음과 같이 하면 된다고 생각했는데,
텍스트 편집기에서 열면 원래 인코딩(한국어(windows,dos))으로 열 수 없답니다.
제가 오브젝티브 C의 기본만 알고 NS객체들에 대해 무지하지만 그쪽으로 해결할 수 있으면 좋겠습니다. 배우고자 하는 마음에서..
어떻게 바꾸는 게 좋을까요? 조언을 부탁드립니다.

소스는 다음과 같습니다.
#include <stdio.h>

void main()
{
        FILE *fp,*wfp;
        int ch;
        int a=0, b=0, c=0;

        printf("\\n Shift sync by: "); scanf("%d",&b);

        fp=fopen("abc","r");
        wfp=fopen("bcd.smi","w");

        do {
                ch=getc(fp);
                putc(ch,wfp);
                if (a== 0){ if(ch=='<') a= 1; }
                else if (a== 1){ if(ch=='S') a= 2; else a= 0; }
                else if (a== 2){ if(ch=='Y') a= 3; else a= 0; }
                else if (a== 3){ if(ch=='N') a= 4; else a= 0; }
                else if (a== 4){ if(ch=='C') a= 5; else a= 0; }
                else if (a== 5){ if(ch==' ') a= 6; else a= 0; }
                else if (a== 6){ if(ch=='S') a= 7; else a= 0; }
                else if (a== 7){ if(ch=='t') a= 8; else a= 0; }
                else if (a== 8){ if(ch=='a') a= 9; else a= 0; }
                else if (a== 9){ if(ch=='r') a=10; else a= 0; }
                else if (a==10){ if(ch=='t') a=11; else a= 0; }
                else if (a==11){
                        a= 0;
                        if(ch=='=') {
                                c=0;
                                while((ch=getc(fp)) >= '0' && ch <= '9'){
                                        c = 10*c + (int)ch - (int)'0';
                                }
                                fprintf(wfp, "%d", c+b);
                                putc(ch,wfp);
                                continue;
                        }
                }
        } while (ch!=EOF);
        fclose(wfp);
        fclose(fp);
}
0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
포인트 27,375
가입일 :
2005-01-29 15:50:31
서명 :
미입력
자기소개 :
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 2

hongjuny님의 댓글

안녕하세요.

루프 돌릴때 약간 논리적인 모순이 있었어요. ^^ 그 부분만 약간 손보면 문제없이 동작 될 겁니다. 그리 잘 짜진 않았지만 대략 이런 부분에서 문제가 있었음을 보이는 데 충분한 소스를 첨부해 드릴테니 참고하십시오.

#include <stdio.h>

int main (int argc, const char * argv[]) {
FILE *fp,*wfp;
int ch;
int a=0, b=0, c=0;

printf("\\n Shift sync by: "); scanf("%d",&b);

fp=fopen(argv[1],"r");
wfp=fopen("test.smi","w");

do {
ch=getc(fp);
if (a== 0){ if(ch=='<') a= 1; }
else if (a== 1){ if(ch=='S') a= 2; else a= 0; }
else if (a== 2){ if(ch=='Y') a= 3; else a= 0; }
else if (a== 3){ if(ch=='N') a= 4; else a= 0; }
else if (a== 4){ if(ch=='C') a= 5; else a= 0; }
else if (a== 5){ if(ch==' ') a= 6; else a= 0; }
else if (a== 6){ if(ch=='S') a= 7; else a= 0; }
else if (a== 7){ if(ch=='t') a= 8; else a= 0; }
else if (a== 8){ if(ch=='a') a= 9; else a= 0; }
else if (a== 9){ if(ch=='r') a=10; else a= 0; }
else if (a==10){ if(ch=='t') a=11; else a= 0; }
else if (a==11){
a= 0;
if(ch=='=') {
putc(ch,wfp) ;
c=0;
while((ch=getc(fp)) >= '0' && ch <= '9'){
c = 10*c + (int)ch - (int)'0';
}
fprintf(wfp, "%d", c+b);
putc(ch,wfp);
continue;
}
}
if( ch == EOF ) break ;
putc((unsigned char)ch,wfp) ;
} while (ch!=EOF);
fclose(wfp);
fclose(fp);

return 0 ;
}

이상훈님의 댓글

아하.. 홍준님 소스를 보니 EOF가 문제였군요 ^^ 그 부분을 해결하니 잘 됩니다. 감사합니다 ^^

전체 3 건 - 1 페이지
2008.11
08

[App 개발] 간단한 이벤트 핸들러...

어떤 특정 종류 파일이 생성될 때 간단한 애플스크립트나 오토메이터 웍플로를 실행시키고자 하는데, 애플스크립트가 그런 이벤트를 핸들링을 못 하는것 같더군요. (아니면 말씀해주세요) 그래서 오브젝팁씨로 만들어야 할 것 같은데, 제가 코코아에 대해 …

2007.12
19

열람중 [App 개발] 질문... 파일입출력시 인코딩

파일입출력을 할 때 그 파일의 인코딩이 무엇이든 그대로 유지하면서 숫자 부분만 바꾸려고 합니다. 간단한 자막 싱크 변환 프로그램인데요. 그냥 다음과 같이 하면 된다고 생각했는데, 텍스트 편집기에서 열면 원래 인코딩(한국어(windows,dos))…

2007.07
05

[App 개발] 코코아 파일입출력 참고할만한 링크좀 부탁합니다.

코코아 파일입출력 참고할만한 링크좀 부탁합니다. 초보라 아는 게 거의 없네요... 감사합니다.