有没有办法将 \r\n 作为 C 程序的命令行参数传递?
Is there a way to pass \r\n as command line arguments for a C programm?
我想检查作为 C 程序命令行参数传递的字符串的结尾。末尾应包含空格字符 \r\n。我所做的是在程序之后将引号之间的字符串写成这样:
./program_name "String"
我想知道是否存在在该字符串末尾传递 \r\n 的方法。
如果我只是写:
./program_name "String\r\n"
我仍然没有得到 return 我期望将字符串的最后两个字符与“\r”和“\n”进行比较。这是我正在检查的代码段:
char * request_line = argv[1];
size_t sizeOfReq = strlen(request_line);
else if(request_line[sizeOfReq-1] != '\n' && request_line[sizeOfReq-2] != '\r') {
printf("He couldn't just do that!\n");
return false;
}
这应该可以解决问题。
./program_name "String\r\n"
\r\n
不是特殊字符。这只是一个惯例。反斜杠后跟一个字符被某些软件解释为转义序列。在您的情况下,C 编译器将两个字符序列 \r
转换为一个字符回车 return 并将两个字符序列 \n
转换为一个字符换行符。
所以,你依赖于有人将转义序列转换为相应的真实字符。
现在您有两个选择:在您的程序中添加代码来处理转义序列转换,或者让调用者生成真实的字符。
在linux中,提供给进程的参数由调用进程的程序创建。如果你使用bashshell启动进程,你可以使用(readhere)
./program_name $'String\r\n'
向bash表明该字符串包含需要解析的类C字符串。
其他 shell 可以拥有自己的 sytax/rules。
我想检查作为 C 程序命令行参数传递的字符串的结尾。末尾应包含空格字符 \r\n。我所做的是在程序之后将引号之间的字符串写成这样:
./program_name "String"
我想知道是否存在在该字符串末尾传递 \r\n 的方法。 如果我只是写:
./program_name "String\r\n"
我仍然没有得到 return 我期望将字符串的最后两个字符与“\r”和“\n”进行比较。这是我正在检查的代码段:
char * request_line = argv[1];
size_t sizeOfReq = strlen(request_line);
else if(request_line[sizeOfReq-1] != '\n' && request_line[sizeOfReq-2] != '\r') {
printf("He couldn't just do that!\n");
return false;
}
这应该可以解决问题。
./program_name "String\r\n"
\r\n
不是特殊字符。这只是一个惯例。反斜杠后跟一个字符被某些软件解释为转义序列。在您的情况下,C 编译器将两个字符序列 \r
转换为一个字符回车 return 并将两个字符序列 \n
转换为一个字符换行符。
所以,你依赖于有人将转义序列转换为相应的真实字符。
现在您有两个选择:在您的程序中添加代码来处理转义序列转换,或者让调用者生成真实的字符。
在linux中,提供给进程的参数由调用进程的程序创建。如果你使用bashshell启动进程,你可以使用(readhere)
./program_name $'String\r\n'
向bash表明该字符串包含需要解析的类C字符串。
其他 shell 可以拥有自己的 sytax/rules。