从二进制文件中抓取文本时,为什么 xdg_vtnr=8 是我的结果
When grabbing text from a binary file, why is xdg_vtnr=8 my result?
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout << argv[2] << endl;
}
这只是我正在编写的程序的开始,但我正在 已经卡住了。它只是从我拥有的二进制文件中读取数据 保存在与此程序相同的目录中。我编译并运行 带有./a.out
这里有一些错误,主要是因为参数和输入流之间的混淆。
argv
包含参数/参数作为执行时传入程序的 c 字符串数组,argc
参数的数量。如果您要运行./a.out filename
您应该看到
argc = 2
argv[0] = "/<current path>/a.out"
argv[1] = "filename"
但是,您运行的./a.out < filename
没有参数和重定向。因此,您访问argv[2]
是未定义的行为,似乎您得到了垃圾值"xdg_vntr=8"。不幸的是,我无法充分解释为什么这是您的结果,因为它是未定义的,并且将取决于编译器和系统的实现。
因此,这样做< filename
告诉运行程序的 shell 打开filename
并将其定向到程序的标准输入流(又名 std::cin
) 您可以将输入流缓冲区直接发送到输出流,如下所示std::cout << std::cin.rdbuf();
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 序列化,没有库的整数,得到奇怪的结果
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 在更改for循环的第三部分后,未使用for循环结果
- 使用++运算符会导致意外的结果
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- C++Brute Force攻击函数不会返回结果
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 算术运算的结果类似于:C浮点变量中的1/3
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 密码登录程序将永远循环并显示不正确的结果
- 如何让C++'tally up'结果并制定计划?
- 为什么这个程序的结果是3 "born"?和 4 死
- 尝试将字符串/字符转换为整数会产生意外结果