无法输出int作为sizeof()的结果

时间:2013-04-17 01:29:42

标签: c++ windows windows-8 mingw sizeof

我喜欢用C ++编写一个程序,它会为我同步两个目录,而对于它的一部分,我需要得到一个char数组的大小。我正在使用的代码在

之下
#include <iostream>
#include <Windows.h>
using namespace std;

int main() {
    char binaryPath[MAX_PATH];
    GetModuleFileName(NULL, binaryPath, MAX_PATH);
    int r = sizeof(binaryPath);

    return 0;
}

无论如何,该代码编译并运行正常。当我尝试cout binaryPath变量时出现问题。在主块中,在r的赋值/声明之后,如果我尝试将r输出到屏幕,那么

cout << r;

二进制文件停止运行。 Windows说“Cpp.exe”已停止工作,我不得不强行关闭程序。我完全不知道为什么。

即使我尝试更简单的版本,例如下面的程序

#include <iostream>
using namespace std;
int main() {
    int r = 7;
cout << sizeof(r);
return 0;
}

结果是一样的。在我看来,我可以在幕后使用sizeof()做我想要的事情,但是一旦我尝试输出它就会停止工作。

我在运行Windows 8的mac上使用MinGW(b / c win8过去曾给我带来一些麻烦,不确定它是否能够破解c ++)。

迫切需要帮助和赞赏。

谢谢!

2 个答案:

答案 0 :(得分:1)

sizeof()将为您提供对象的大小。那是MAX_PATH,而不是其中的字符串长度。请使用strlen

答案 1 :(得分:0)

重新安装MinGW。这对我有用。确保以管理员身份运行设置