簡體   English   中英

如何在可執行文件的參數中包含回車符?

[英]How to include a carriage return in an argument to an executable?

我有一個簡單的程序,逐字符打印argv ,我想傳遞回車( '\\r'或ASCII#0x0D)作為程序參數。 如何在linux OS(Ubuntu)中實現這一目標? 我正在使用bash。

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[]) {
    int i;  

    for(i = 1; i < argc; i++) {     
        char* curr = argv[i];
        while(*curr != '\0') {
            printf("[%c %x] ", *curr, *curr);
            curr++;
        }
        printf("\n");
    }
    return 0;
}

假設我們的可執行程序稱為test ,如果輸入是:

./test hi

然后我們得到

[h 68] [i 69]

或者如果我想打印換行符,我用命令執行程序:

./test '[Enter Pressed]'

然后我們得到

[
 0a] 

我應該為程序參數鍵入什么,以便打印出回車符? 或者更常見的是鍵盤不支持的任何ASCII字符?

這實際上不是C問題; 問題是,如何在可執行文件的參數中包含回車符。

你沒有說明你正在使用什么shell,但是在許多shell中,你可以這樣寫:

./test $'\r'

其中$'...'是一種特殊的引號,可以讓你使用C風格的轉義序列。 (例如,參見Bash參考手冊中的§3.1.2.4“ANSI-C引用” 。)

如果你的shell不支持這種表示法,但符合POSIX標准,你可以使用printf為你處理轉義序列:

./test "$(printf '\r')"

(參見POSIX規范的Shell命令語言部分中的§2.6.3“命令替換” ,以及printf實用程序的文檔 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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