weixin_43591079 2021-07-02 23:07 采纳率: 100%
浏览 52
已采纳

0xC0000005: 写入位置 0x010DC000 时发生访问冲突。

我一新手,学习一小段C代码,遇到问题.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define Str_num 128//字符串条数
#define Str_size 20//符串窜大小
#define Str_width 15//字符宽度

struct Rain
{
int x;
int y;
int speed;
char str[Str_size];
}rain[Str_num];

char Createch()
{
char temp = 0;
int flag = rand() % 3;
if (flag==0)
{
temp = rand() % 26 + 'A';//产生A-Z随机数
}
else if (flag == 1)
{
temp = rand() % 26 + 'a';
}
else
{
temp = rand() %10 +'0';
}
return temp;
}

void GameInit()
{
for (int i = 0; i< Str_num;i++)
{
for (int k = 0; i< Str_size;k++)
{
rain[i].str[k]=Createch();//对128个字符串逐个赋值
//strcpy(rain[i].str[k], Createch());
}
}
}

int main()
{
srand((unsigned)time(NULL));//随机数种子
GameInit();
for (int i = 0; i < Str_num; i++)
{
puts(rain[i].str);
//printf("%s", rain[i].str);
}
return 0;
}

产生如标题报警。
0x010D18E9 处(位于 Project22.exe 中)引发的异常: 0xC0000005: 写入位置 0x010DC000 时发生访问冲突。

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-07-02 23:09
    关注

    for (int i = 0; i< Str_num;i++)
    {
    for (int k = 0; i< Str_size;k++)

    第二层循环写错了,是k<Str_size,不是 i<Str_size

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊