データ構造実験のDスタックとキュー9:ラインエディタ

説明

簡単な行編集プログラムの機能は、ユーザーが入力したプログラムやデータを端末から受け取り、ユーザーのデータ領域に格納することです。

ユーザーは端末に入力する際に​​間違いがないことを保証できないため、編集プログラムで「ユーザーデータ領域に各文字を格納する」ことは明らかに最適ではありません。より良いアプローチは、ユーザーが入力した文字の行を受け入れるように入力バッファーを設定し、それらをユーザーのデータ領域に1行ずつ格納することです。ユーザーがエラーを入力し、エラーが見つかったときに修正できるようにします。たとえば、入力したばかりの文字が間違っていることにユーザーが気付いた場合、バックスペース文字「#」を追加して、前の文字が無効であることを示すことができます。

現在の行のエラーが多すぎる場合、または修正が難しい場合は、バックライン文字「@」を入力して、現在の行の文字がすべて無効であることを示すことができます。

すでに行頭にある場合は、「#」記号を入力し続けることは無効です。
入力

複数行の文字シーケンスを入力します。行文字の総数(バックスペースおよびバックスペース文字を含む)は250以下です。
出力

上記の手順に従って出力を取得します。
サンプル

入力

whli ## ilr#e(s#* s)
outcha @ putchar(* s =#++);
出力

while(* s)
putchar(* s ++);
SubmitSolutions

#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