我有一个简单的程序,逐字符打印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字符?
答案 0 :(得分:6)
这实际上不是C问题;问题是,如何在可执行文件的参数中包含回车符。
你还没有说明你正在使用什么shell,但在许多shell中,你可以这样写:
./test $'\r'
其中$'...'
是一种特殊的引号,可以使用C风格的转义序列。 (例如,参见§3.1.2.4 "ANSI-C Quoting" in the Bash Reference Manual。)
如果您的shell不支持该表示法,但符合POSIX标准,则可以使用printf
为您处理转义序列:
./test "$(printf '\r')"
(请参阅§2.6.3 "Command Substitution" in the Shell Command Language portion of the POSIX spec,加上the documentation for the printf
utility。)