use*_*875 1 null printf char segmentation-fault
我有以下代码的问题:
for(i = 0;(i - 1)< n;i++)
{
char* b;
sprintf(b, "%d", i);
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好但是当我运行它时,它给我臭名昭着的"0XC0000005访问冲突"错误.我已经尝试将b设置为NULL,"","0",0和其他一些东西,但后来我得到"0XC0000005访问冲突"错误或"表达式:字符串!= NULL.任何帮助将不胜感激!
sprintf将数据写入现有缓冲区,您将其作为第一个参数传递给它.目前你根本没有为b指定一个值,这意味着(C中的IIRC)值可以是任何值.如果将其设置为NULL或0,sprintf则尝试从地址0开始写入内存.
您需要创建适当大小的缓冲区,以便sprintf可以写入它.例如:
for(i = 0;(i - 1)< n;i++)
{
char b[10];
sprintf(b, "%d", i);
}
Run Code Online (Sandbox Code Playgroud)
当然,这实际上是否要分配缓冲区取决于您的实际代码想要对结果做什么.
| 归档时间: |
|
| 查看次数: |
2730 次 |
| 最近记录: |