char [] 和 sprintf 段错误

标签 c char segmentation-fault printf

这是我的程序的精简版。我不明白为什么会出现段错误。

....
int main(int argc, const char * argv[])
{
    char quit = 0;
    char buffer[100];
    ...
    while (quit == 0) {
        sprintf(buffer,"%s",get_timer_ticks(&mytimer));
        // puts(buffer);
...
}

编辑:顺便说一下,get_timer_ticks 返回 Uint32。

最佳答案

你应该使用

sprintf(buffer,"%u",get_timer_ticks(&mytimer));

%s 需要字符串,而不是整数。由于某些随机整数不太可能是指向类似以 NULL 结尾的字符串的有效指针,因此会发生 SEGFAULT。

关于char [] 和 sprintf 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605711/

相关文章:

c - 为什么字符数组的简单声明会使我的代码崩溃?

c++ - OpenGL错误编译着色器

c - 寻找奇数的中间数

从动态分配的文件中计算最多重复出现的元音

c - 为什么当 n>500 时会出现段错误?用 C 编码

c++ - 线程中的 Magick++ 段错误

c - 当只有数字的概念就足够了时,是什么激发了 C 语言中 "pointers"的概念?

c - 为什么 sizeof 在 32 位进程的 linux 和 VS 上不同?即使是 "#pragma pack"和 "-fpack-struct"

gpointer 中的 char* 以奇怪的编码发送字符串

c - C函数中返回字符串