我想检查作为C程序的命令行参数传递的字符串的结尾。末尾应包含空格字符\ r \ n。我要做的是在程序之后在引号之间写入字符串,如下所示:
./program_name "String"
我想知道是否存在一种在该字符串末尾传递\ r \ n的方法。如果我刚刚写过:
./program_name "String\r\n"
我仍然无法获得将字符串的最后两个字符与'\ 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;
}
\r\n
不是特殊字符。这只是一个约定。一些软件将反斜杠后跟一个字符的情况解释为转义序列。在您的情况下,C编译器将两个字符序列\r
转换为一个字符回车符,将两个字符序列\n
转换为一个字符换行符。
因此,您需要依靠某人将转义序列转换为相应的真实字符。
现在,您有两个选择:在程序中添加代码以处理转义序列转换或使调用方生成真实字符。
在linux中,给进程指定的参数是由调用该进程的程序创建的。如果您正在使用bash shell启动该过程,则可以使用(在此处阅读)
./program_name $'String\r\n'
指示bash该字符串包括需要解析的类似C的字符串。
其他外壳可以有自己的语法/规则。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句