[英]How do I check if my code responds correctly to a backspace character?
我正在從 K&R 的書中學習 c,我想完成這項任務:
我的代碼,在這里:
#include <stdio.h>
int main()
{
int c;
while ((c = getchar()) != EOF) {
if (c == '\t') {
putchar('\\');
putchar('t');
}
else if (c == '\b') {
putchar('\\');
putchar('b');
}
else if (c == '\\') {
putchar('\\');
putchar('\\');
}
else
putchar(c);
}
}
與斜杠和制表符配合得很好,但我不知道如何檢查我的代碼是否適用於文本中的真正退格字符(如果可能的話?)。
我使用了這個輸入:
there will be now an tab: .
in additon, here are three slashes: \,\,\.
並檢查了這個站點中的 output,它工作得很好,我得到了這個 output:
there will be now an tab: \t.
in additon, here are three slashes: \\,\\,\\.
我已經足夠大,可以記住發送到line printers
(和點陣式打印機)的字符流何時會使用“退格”來覆蓋以顯示為粗體。
您已正確完成所有操作,但想證明您的 if/else 適用於退格。
暫時用“自定義字符串”替換while循環......這應該可以解決問題......
// while ((c = getchar()) != EOF) {
for( char *cp = "Test\b\t\\ Done\n"; (c = *cp ) != '\0'; cp++ ) {
您可以使用十六進制編輯器將退格字符放入文本文件中。 退格字符的字符代碼是 ASCII 中的8
。 大多數IDE都有一個內置的十六進制編輯器(請參閱Visual Studio和Visual Studio Code的鏈接說明)。
您還可以編寫一個簡短的程序,為您創建一個包含退格字符的小文本文件:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
FILE *fp;
fp = fopen( "test.txt", "wx" );
if ( fp == NULL )
{
fprintf( stderr, "Error opening file!\n" );
exit( EXIT_FAILURE );
}
fputs(
"This is a line without a backspace character.\n"
"This is a line with a backspace charax\bcter.\n",
fp
);
fclose( fp );
}
請注意,由於打開文件時使用了"wx"
模式,如果文件已經存在,將無法打開文件。 如果您不想這樣做,則可以將模式更改為"w"
,在這種情況下,如果文件已經存在,它將覆蓋該文件。
一旦你有一個帶有退格字符的文本文件,你就可以將它 pipe 到你程序的標准輸入中,例如通過這樣調用你的程序:
myprogramname <test.txt
從 IDE 內部運行程序時,還應該可以將其配置為標准輸入從文件通過管道傳輸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.