繁体   English   中英

char []和sprintf分割错误

[英]char [] and sprintf segmentation fault

这是我程序的精简版。 我不明白为什么我在这里遇到细分错误。

....
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。

您要sprintf()格式化字符串并将其放入buffer 结果,它将您的无符号整数视为一个指针-可能是一个非常糟糕的指针,因此出现了段错误。 将您的%s更改为%u以请求其设置无符号整数的格式。

您正在尝试将整数解释为字符串。 这导致printf尝试从地址中读取一个字符串,该地址的编号恰好会返回get_timer_ticks 此地址可能没有有效的字符串。

%s格式说明符适用于C风格的字符串,但get_timer_ticks返回get_timer_ticks 返回的值对于sprintf来说不太可能有意义。

您需要在sprintf中使用%u而不是%s

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM