我有以下代码的问题:
for(i = 0;(i - 1)< n;i++) { char* b; sprintf(b, "%d", i); }
它编译得很好但是当我运行它时,它给我臭名昭着的"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); }
当然,这实际上是否要分配缓冲区取决于您的实际代码想要对结果做什么.