반응형

텍스트 파일에서 특정한 단어를 찾아서 다른 단어로 변경하여 출력 파일에 쓰는 프로그램을 작성하라.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
#define ROW 20
#define COL 20
int main(void)
{
    FILE *fpr=NULL;
    FILE *fpw=NULL;
    char tok[ROW][COL];
    char rpl[SIZE];
    char sub[SIZE];
    char line[SIZE];
    char *token;
    int count; int i;
    if((fpr=fopen("origin.txt","r"))==NULL)
    {
        printf("파일오픈실패1\n");
        exit(1);
    }
    if((fpw=fopen("change.txt","a"))==NULL)
    {
        printf("파일오픈실패2\n");
        exit(1);
    }
    printf("바뀔 단어를 입력하세요: ");
    gets(rpl);
    printf("대신 넣을 단어를 입력하세요: ");
    gets(sub);
    while(!feof(fpr))
    {
        fgets(line,SIZE,fpr);
            count=0;
            token=strtok(line," "); //토큰 분리
            while(token!=NULL)
            {
                strcpy(tok[count],token); //토큰을 이차원배열로 삽입
                if(strcmp(tok[count],rpl)==0//이차원배열과 rpl 비교
                {strcpy(tok[count],sub);} //같을시 이차원배열에 sub 삽입
                count++//카운트는 이차원배열 개수 세는데 사용
                token=strtok(NULL," \n"); //연속적 토큰 분리
            }
        for(i=0;i<count;i++)
        {
            strcat(tok[i]," "); //자르는 것으로 공백문자사용 했기에 다시 붙여줘야함
            fputs(tok[i],fpw);
        }
        fputs("\n",fpw); //자르는 것으로 개행문자 사용했으므로 다시 붙여줌
    } //이프로그램은 불완전한데 쉼표나 마침표가 붙어있으면 검색을 하지 못한다.
    fclose(fpr); //그렇다고 자르는 것으로 쉼표를 추가한다고 해도 그 쉼표를
    fclose(fpw); // 제자리에 다시 박아놓는 방법을 찾지 못하였다.(어떤 걸로 잘랐는지 어떻게 구분할까?)
    return 0;
    }
cs




이프로그램은 불안전합니다. 공백문자와 개행문자로 분리된 일반적인 단어는 잡아낼 수 있지만 

쉼표나 마침표가 붙어있는 문자는 잡아낼 수가 없습니다.  더 좋은 방법이 있으면 알려주세요!




반응형
반응형

요즘 길거리에서는 글자들이 흘러가는 LED 전광판을 볼 수 있다. 이것을 프로그램으로 구현하여 보자.

나는 스크린샷을 찍으려고 count 변수를 이용하여 100번만 반복되게 하였지만, count 관련 줄들을 지우면 무한 반복하게 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
    char a[SIZE]="";
    char temp;
    int i,j,count;
    j=0; count=0;
    printf("광고하고 싶은 텍스트를 입력하세요: ");
    gets(a);
    strcat(a," ");
    while(count<=100)
    {
        for(i=0;i<strlen(a);i++)
        {printf("%c", a[i]);}
        printf("\n");
        for(i=0;i<strlen(a);i++)
        {
            if(i==0)
                {temp = a[strlen(a)];
                a[strlen(a)]=a[i];
                a[i]=a[i+1];}
            else if(i==strlen(a)-1)
                a[i]=temp;
        a[i]=a[i+1];
        }
    count++;
    }
return 0;
}
cs



반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

좌표 일치 확인  (0) 2016.12.27
찾아 바꾸기  (0) 2016.08.22
문자열로 연산하기  (0) 2016.08.22
구두점 개수 세기  (0) 2016.08.21
영어 이름 입력  (0) 2016.08.21

+ Recent posts