day 2 - 데이터 구조 실험의 창고 와 대기 열 9: 줄 편집기

데이터 구조 실험의 창고 와 대기 열 9: 줄 편집기
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic Discuss
Problem Description
 간단 한 줄 편집 프로그램의 기능 은 사용자 가 터미널 에서 입력 한 프로그램 이나 데 이 터 를 받 아들 이 고 사용자 의 데이터 영역 에 저장 하 는 것 입 니 다. 
 
사용자 가 터미널 에 입력 할 때 오류 가 발생 하지 않 을 것 이 라 고 보장 할 수 없 기 때문에 편집 프로그램 에서 '한 문 자 를 받 아들 일 때마다 사용자 데이터 영역 에 저장 합 니 다' 는 방법 이 가장 적절 하지 않 습 니 다.사용자 가 입력 한 줄 의 문 자 를 받 아들 이 고 한 줄 씩 사용자 데이터 영역 에 저장 하 는 것 이 좋 습 니 다.사용자 가 오 류 를 입력 할 수 있 도록 하고 오류 가 발견 되 었 을 때 바로 수정 할 수 있 습 니 다.예 를 들 어 사용자 가 방금 입력 한 문자 가 잘못 되 었 다 는 것 을 발 견 했 을 때, 이전 문자 가 잘못 되 었 음 을 나타 내 는 백 스페이스 문자 '\ #' 를 추가 할 수 있 습 니 다. 
 
현재 입력 한 줄 에 오류 가 많 거나 고치 기 어 려 운 것 을 발견 하면 현재 줄 에 있 는 문자 가 모두 잘못 되 었 음 을 표시 하기 위해 서 취소 문자 '@' 을 입력 할 수 있 습 니 다. 
 
줄 의 맨 위 에 '\ #' 기 호 를 계속 입력 하면 유효 하지 않 습 니 다. 
Input
 다 중 줄 문자 시퀀스 를 입력 하 십시오. 줄 문자 총수 (퇴 격 문자 와 퇴 행 문자 포함) 는 250 보다 크 지 않 습 니 다. 
Output
 상술 한 설명 에 따라 얻 은 출력. 
Sample Input
whli##ilr#e(s#*s)
outcha@putchar(*s=#++);

Sample Output
while(*s)
putchar(*s++);

Hint
 
 
 
#include #include #include
char str1[10001], str2[10001];
int main(void) {     int i, j, flag, n, jin;
    while(gets(str1) != NULL)     {         n = strlen(str1);         str 2 를 창고 에 넣 는 데 사용 되 는        flag = 0;         memset(str2, 0, sizeof(str2));
        for(i = 0; i < n; i++)         {             if(str1[i] == '#')             {                 if(i == 0)                 {                     for(j = 0; j < n - 1; j++)                     {                         str1[j] = str1[j + 1];                     }
                    i = -1;  //나 온 후에 먼저 1 을 추가 합 니 다. 왜냐하면 시작 에 여러 개의 \ # 문자 가 잇 따 를 수 있 기 때 문 입 니 다.                    n--;                     continue;                 }
                else                 {                     jin -= 1;  //str 2 의 \ # 앞 문 자 를 제거 합 니 다.                }             }
            else if(str1[i] == '@')             {                 memset(str2, 0, sizeof(str2));                 jin = 0;             }
            else             {                 str2[jin++] = str1[i];             }         }
        if(!flag)         {             printf("%s", str2);         }     }
    return 0; }

좋은 웹페이지 즐겨찾기