演算法3 2 行編輯程式

2022-04-09 10:58:40 字數 1021 閱讀 3682

乙個簡單的行編輯程式的功能是:接收使用者從終端輸入的程式或資料,並存入使用者的資料區。由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,「每接收乙個字元即存入使用者資料區」的做法顯然不是很恰當。較好的做法是,設立乙個輸入緩衝區,用以接收使用者輸入的一行字元,然後逐行存入使用者資料區。允許使用者輸入出差錯,並在發現有誤時可以及時更正。例如,當使用者發現剛剛鍵入的乙個字元是錯的時,可補進乙個退格符「#」,以表示前乙個字元無效;如果發現當前鍵入的行內錯誤較多或難以補救,則可以鍵入乙個退行符「@」,以表示當前行中的字元均無效。例如假設從終端接收了這樣的兩行字元:

whil##ilr#e(s#*s)

outcha@    putchar(*s=#++);

則實際有效的是下列兩行:

while(*s)

putchar(*s++);

為此,可設這個輸入緩衝區為乙個棧結構,每當從終端接收了乙個字元之後先作如下判別:如果它不是退格符也不是退行符,則將該字元壓入棧頂;如果是乙個退格符,則從棧頂刪去乙個字元;如果它是乙個退行符,則將字元棧清為空棧。上述處理過程可用下面演算法描述之:

若干行程式或者資料,每行不超過200個字元。

經過行編輯程式處理過後的輸出。

whil##ilr#e(s#*s)

outcha@ putchar(*s=#++);

while(*s)

putchar(*s++);

#include#includeint top = -1;

char ch;

char a[20000];

int main()

else if(ch=='@')

else

ch = getchar();

}int i = 0;

while(i <= top)

top = -1;

putchar('\n');

if(ch != eof)}}

棧 行編輯程式

如果遇到 表示後退一格,即前一字元無效,如果遇到 表示前一單詞無效,即退出到空格或所在行頭為止。採用棧實現。輸入 whli ilr e s s 輸入包含若干行,由各種字元構成。輸出 while s 利用描述規則輸出最後的文字內容。seqstack.h ifndef seqstack h define...

棧 行編輯程式

include include include include typedef char datatype include seqstack.h void lineedit void main void lineedit 行編輯程式 ch getchar 讀入下乙個字元 while stackemp...

DS 行編輯程式

題目描述 乙個簡單的行編輯程式的功能是 接收使用者從終端輸入的程式或資料,並存入使用者的資料區。由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,每接收乙個字元即存入使用者資料區 的做法顯然不是很恰當。較好的做法是,設立乙個輸入緩衝區,用以接收使用者輸入的一行字元,然後逐行存入使...