当前位置:  开发笔记 > 编程语言 > 正文

sprintf访问冲突

如何解决《sprintf访问冲突》经验,为你挑选了1个好方法。

我有以下代码的问题:

for(i = 0;(i - 1)< n;i++)
{
char* b;
sprintf(b, "%d", i);
}

它编译得很好但是当我运行它时,它给我臭名昭着的"0XC0000005访问冲突"错误.我已经尝试将b设置为NULL,"","0",0和其他一些东西,但后来我得到"0XC0000005访问冲突"错误或"表达式:字符串!= NULL.任何帮助将不胜感激!



1> Jon Skeet..:

sprintf将数据写入现有缓冲区,您将其作为第一个参数传递给它.目前你根本没有为b指定一个值,这意味着(C中的IIRC)值可以是任何值.如果将其设置为NULL或0,sprintf则尝试从地址0开始写入内存.

您需要创建适当大小的缓冲区,以便sprintf可以写入它.例如:

for(i = 0;(i - 1)< n;i++)
{
    char b[10];
    sprintf(b, "%d", i);
}

当然,这实际上是否要分配缓冲区取决于您的实际代码想要对结果做什么.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有