데이터 구조 실험의 D-Stack 및 Queue 9 : Line Editor

기술

간단한 라인 편집 프로그램의 기능은 사용자가 입력 한 프로그램 또는 데이터를 단말기에서 받아 사용자의 데이터 영역에 저장하는 것입니다.

사용자가 단말기에 입력 할 때 실수가 없다는 것을 보장 할 수 없기 때문에 편집 프로그램에서 "사용자 데이터 영역에 각 문자를 저장"하는 것은 분명히 가장 적절하지 않습니다. 더 나은 방법은 사용자가 입력 한 문자 줄을 받아들이도록 입력 버퍼를 설정 한 다음 사용자 데이터 영역에 한 줄씩 저장하는 것입니다. 오류가 발견되면 사용자가 오류를 입력하고 정정 할 수 있습니다. 예를 들어, 사용자가 방금 입력 한 문자가 잘못되었음을 발견하면 백 스페이스 문자 "#"을 추가하여 이전 문자가 유효하지 않음을 나타낼 수 있습니다.

현재 줄에 오류가 너무 많거나 수정하기 어려운 경우 백 라인 문자 "@"를 입력하여 현재 줄의 문자가 모두 유효하지 않음을 나타낼 수 있습니다.

이미 줄의 시작 부분에있는 경우 '#'기호를 계속 입력하는 것은 유효하지 않습니다.
입력

여러 줄 문자 시퀀스를 입력하고 총 줄 문자 수 (백 스페이스 및 백 스페이스 문자 포함)는 250 개 이하입니다.
산출

출력을 얻으려면 위의 지침을 따르십시오.
견본

입력

whli ## ilr # e (s # * s)
outcha @ putchar (* s = # ++);
산출

while (* s)
putchar (* s ++);
제출 솔루션

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int date[255];
int main()
{
    
    int top=-1,i,j,k;
char a[255];
while(gets(a))
{
    
    top=-1;
    k=strlen(a);
    for(i=0;i<k;i++)
    {
    
    
        if(a[i]=='#')
        {
    
    
            if(top>=0)
                top--;
        }
        else if(a[i]=='@')
        {
    
    
            top=-1;
        }
        else
        {
    
    
            date[++top]=a[i];
        }

    }
    for(j=0;j<=top;j++)
    {
    
    
        printf("%c",date[j]);
    }
    printf("\n");
}
    return 0;
}

추천

출처blog.csdn.net/a675891/article/details/103946603