説明
簡単な行編集プログラムの機能は、ユーザーが入力したプログラムやデータを端末から受け取り、ユーザーのデータ領域に格納することです。
ユーザーは端末に入力する際に間違いがないことを保証できないため、編集プログラムで「ユーザーデータ領域に各文字を格納する」ことは明らかに最適ではありません。より良いアプローチは、ユーザーが入力した文字の行を受け入れるように入力バッファーを設定し、それらをユーザーのデータ領域に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;
}