簡體   English   中英

如何檢查我的代碼是否正確響應退格字符?

[英]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 StudioVisual 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM