相关疑难解决方法(0)

C fopen vs open

您是否有任何理由(语法除外)

FILE *fdopen(int fd, const char *mode);
Run Code Online (Sandbox Code Playgroud)

要么

FILE *fopen(const char *path, const char *mode);
Run Code Online (Sandbox Code Playgroud)

代替

int open(const char *pathname, int flags, mode_t mode);
Run Code Online (Sandbox Code Playgroud)

在Linux环境中使用C时?

c unix linux file-io fopen

201
推荐指数
8
解决办法
16万
查看次数

使用`snprintf_s`虚假的安全感

MSVC的"安全" sprintf功能具有"知道"目标缓冲区大小的模板版本.但是,这段代码在结束后很快就在堆栈中绘制了567890 bytes...

char bytes[5];
_snprintf_s( bytes, _TRUNCATE, "%s", "1234567890" );
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么,或者这是一个已知的错误?

(我在VS2005工作 - 没有在2008年或2010年测试)

c++ visual-studio-2005 visual-c++ visual-c++-2005

22
推荐指数
1
解决办法
8473
查看次数

我应该信任哪个编译器?

这将是一个新手问题,但我正在尝试使用C语言(而不是C++)进行一个小练习,我遇到了一些问题.

假设我想在一个方法中使用一个数组,该方法的大小取决于其中一个参数:

void someFunc(int arSize)
{
    char charArray[arSize];
    // DO STUFF
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将其编译为Visual Studio 2013中.c文件时,我收到一条错误消息,指出不允许使用非常量数组.但是,相同的代码在GNU编译器下的CodeBlocks中工作.我应该相信哪一个?编译器的行为是否正常?我一直认为,如果你正在做一些编译器不喜欢的事情,你不应该首先做它,因为它不是标准.

任何输入都很有用!我来自Python背景,我正在尝试更多地参与数据结构和算法的编程.

您可以告诉我的平台是Windows.如果这个问题需要更多信息才能回答,请告诉我.

c arrays gcc visual-studio variable-length-array

4
推荐指数
1
解决办法
1159
查看次数