편집 기록

편집 기록
  • 프로필 noah0508님의 편집
    날짜2021.04.02

    간단한 파일 입출력 질문입니다


    패턴을 스트링에서 찾아

    패턴과 스트링이 맞는 부분의 개수 맞는부분의 스트링 인덱스

    를 출력하는코드를 작성하고 현재 바탕화면에 reault.txt, string.txt, pattern.txt 세 개를 저장해둔 상태입니다. 두번째파일에는 예시로 "Hello world my name is world", 세 번째 파일에는 예시로 world가 있어서 현재 파일 입력은 매우 잘되는 상태입니다. 실제로도 코드 내의 변수 stack에는 2가 들어가고 패턴이 맞는 부분의 인덱스인 6, 23도 printf로하면 잘 출력되던데, 이상하게 result.txt에는 왜 아무것도 출력이 안되는지 모르겠습니다ㅜ

    #include <stdio.h>
    #include <string.h>
    #define CMAX 10000000
    #define PMAX 3000
    int stack=0;
    char space=' ';
    char str[CMAX], pat[PMAX];
    int stack_2[PMAX];
    int nfind(char*, char*);
    int main(){
        FILE *fp=fopen("string.txt", "rt");
        FILE *fp2=fopen("pattern.txt", "rt");
        fgets(str, CMAX, fp);
        fgets(pat, PMAX, fp2);
        for(int i=0;i<PMAX;i++)
            stack_2[i]=-1;
        nfind(str, pat);
        int S;
        S=stack;
        FILE *fp3;
        fp3=fopen("result.txt", "wt");
        if(fp3==NULL)
        {
            printf("failed\n");
            return 1;
        }
        fprintf(fp3, "%d\n", stack);
        while(stack>0)
        {
            fprintf(fp3, "%d ", stack_2[stack-1]);
            fprintf(fp3, "%c", space);
            stack--;
        }
        fclose(fp);
        fclose(fp2);
        fclose(fp3);
        return 0;
    }
    int m=0;
    int nfind(char *string, char *pat)
    {
        int i, j, start=0;
        int n;
        int lasts=strlen(string)-1;
        int lastp=strlen(pat)-1;
        int endmatch=lastp;
        for(i=0;endmatch<=lasts;endmatch++, start++){
            if(string[endmatch]==pat[lastp])
            {
                for(j=0, i=start;j<=lastp&&string[i]==pat[j];i++)
                {
                    j++;
    
                }
    
    
            }
            if(j==lastp+1)
           {
    
                 stack_2[m]=start;
                 m++;
                 stack++;
                 j=0;
            }
            else
                continue;
    
        }
        return 0;
    
    }
    
  • 프로필 Sumin-Yu-creator님의 편집
    날짜2021.04.02

    간단한 파일 입출력 질문입니다


    패턴을 스트링에서 찾아

    패턴과 스트링이 맞는 부분의 개수 맞는부분의 스트링 인덱스

    를 출력하는코드를 작성하고 현재 바탕화면에 reault.txt, string.txt, pattern.txt 세 개를 저장해둔 상태입니다. 두번째파일에는 예시로 "Hello world my name is world", 세 번째 파일에는 예시로 world가 있어서 현재 파일 입력은 매우 잘되는 상태입니다. 실제로도 코드 내의 변수 stack에는 2가 들어가고 패턴이 맞는 부분의 인덱스인 6, 23도 printf로하면 잘 출력되던데, 이상하게 result.txt에는 왜 아무것도 출력이 안되는지 모르겠습니다ㅜ

    int stack=0; char space=' '; char str[CMAX], pat[PMAX]; int stack_2[PMAX]; int nfind(char*, char*); int main() { FILE *fp=fopen("string.txt", "rt"); FILE *fp2=fopen("pattern.txt", "rt"); fgets(str, CMAX, fp);//CMAX=1000000, PMAX=3000 fgets(pat, PMAX, fp2); for(int i=0;i0) { fprintf(fp3, "%d ", stack_2[stack-1]); fprintf(fp3, "%c", space); stack--; } fclose(fp); fclose(fp2); fclose(fp3); return 0; }