代码之家  ›  专栏  ›  技术社区  ›  pipsqueaker117

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

  •  1
  • pipsqueaker117  · 技术社区  · 13 年前

    我正在用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;
    }
    

    不管怎样,这些代码编译和运行都很好。当我尝试定制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 回复  |  直到 13 年前
        1
  •  1
  •   Keith Thompson    13 年前

    sizeof() 会给你物体的大小。就是这样 MAX_PATH ,而不是其中字符串的长度。使用 strlen 为此。

        2
  •  0
  •   pipsqueaker117    13 年前

    重新安装MinGW。这对我很有效。不过请确保以管理员身份运行安装程序