./deviceSet /cumwr-radio-link:bandwidth-management/channels[core='0']/basebands/digital-loop 程序输入上述参数 进入程序后打印argv[1],发现没有单引号,如何解决
时间: 2024-09-06 21:07:13 浏览: 49
bbr-src-1.3.3.rar_ bbr-s_/bbr.cgi_bbr_路由器 linux web_路由器 界面
当您看到程序命令行参数 `./deviceSet /cumwr-radio-link:bandwidth-management/channels[core='0']/basebands/digital-loop` 并且在内部尝试访问 `argv[1]` 但发现没有单引号时,这表明命令行参数传递给程序的方式并不是预期的字符串形式。实际上,这里是一个路径,不是直接作为字符串参数传递的。
在这种情况下,如果 `argv[1]` 需要解析成一个字符串,而不是直接使用路径,你可以通过使用 `strdup()` 或 `std::string`(如果是C++环境)来复制整个路径并将其转换为字符串。例如,在C语言中:
```c
char *path = "/cumwr-radio-link:bandwidth-management/channels[core='0']/basebands/digital-loop";
argv[1] = strdup(path);
```
而在C++中,可以这样做:
```cpp
std::string path = "/cumwr-radio-link:bandwidth-management/channels[core='0']/basebands/digital-loop";
argv[1] = new char[path.size() + 1]; // 添加1是因为要包括终止符'\0'
strcpy(argv[1], path.c_str());
```
请注意,记得在程序结束后释放动态分配的内存,避免内存泄漏。
阅读全文