【发布时间】:2011-05-03 06:15:35
【问题描述】:
我正在使用sprintf 将int 转换为字符串,然后如果我使用printf,程序会崩溃,否则它可以正常工作。谁能告诉我原因?
typedef char* string;
buffer[8] = (string*)malloc(sizeof(string));
buffer[8] = sprintf(buffer[8],"%d",inf[i].mPermissions);
直到这里都可以正常工作,但是当我这样打印时:
printf("%s",buffer[8]);
...我的程序崩溃了。
【问题讨论】:
-
如果你不分享一些代码:不。哦,你应该使用
snprintf而不是sprintf -
您还有信息吗?你是如何使用 sprintf 的。崩溃给出了什么错误?您是否正在运行调试器并查看抛出了什么错误?
-
请在您的问题中包含一些示例代码。 “printf crash”没有说明问题。
-
我会很高兴地投票重新打开这个问题,因为它有崩溃的代码。正如许多人所说,盲目地调试问题是很困难的。戴上我的读心帽,我猜你没有正确调用
sprintf,以至于它已经写满了你的堆栈并且通常会导致未定义的行为。一旦你调用了 UB,任何事情都可能发生。你很幸运,程序崩溃了。如果它似乎工作了一段时间,那就要糟糕得多...然后在不相关的代码部分崩溃。 -
@Shweta:我看到你已经用代码示例更新了你的问题。你给出的代码示例让我相信你对 C 不是很了解。
sizeof(string)是什么?