当前位置:首页 » 编程语言 » c语言内存不能为written
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言内存不能为written

发布时间: 2022-09-23 14:10:33

‘壹’ c语言初学者,运行时出现“该内存不能为"written"”

#include<stdio.h>
void main()
{
int a[10];数组尽量多开10%的空间,以避免数组越界
int n,m=0,t=0;
printf("请输入十个数:");
for(n=0;n<10;n++)
scanf("%d",&a[n]);
for(n=0;n<10;n++)
for(m=1;m<10-n;m++)
if(a[m]>a[m+1])///////根据你的程序,意思应该是冒泡排序,修改点之一
{ ////////////////你的程序这儿有个大括号丢了,这是导致数组越界的原因,就是不能为written
t=a[m];a[m]=a[m+1];a[m+1]=t;
}
for(n=0;n<10;n++)
printf("%d ",a[n]);
}
这是修改完的程序,上面有注释

‘贰’ C语言该内存不能为written

scanf("%ld",a);
->这个就是一个严重错误:scanf("%ld", &a);
a没有初始值,scanf会往内存a处,写数据,发生这个错误提示。
慢慢学习吧,每一个标点。

‘叁’ c语言中内存不能为written

是b<20不是b<=20下面的c也一样

‘肆’ c语言编写好程序运行提示内存不能为written

#include <stdio.h>
int tf(int xx,int yy,int bbx,int bby)
{
if((xx==bbx)||(yy==bby))//这里
{
return(1);
}
else
{
return(0);
}
}
int xyprint(int x,int y)
{
if (y==0)
{
return(0);
}
else
{
int i;
for(i=0;i<80;i++)
{
printf("1");
}
for(i=1;i<(y-1);i++)
{printf("1\n");}
printf("1");
for(i=0;i<x-1;i++)
{
printf(" ");
}

printf("O\n");
}
return 0;
}
int mov(int x,int y,int key)
{
int i;
switch(key)
{case 1:y--;i=1;break;
case 2:y++;i=1;break;
case 3:x--;i=0;break;
case 4:x++;i=0;break;
default:return(0);
}

if(i)
{
return(y);
}
else
{
return(x);
}

}
int xprint(int x,int by,int y)
{
int i;
for(i=0;i<(y-by)-1;i++)
{
printf("1\n");
}
printf("1");
for(i=0;i<x-1;i++)
{printf(" ");}
printf("O");
return 0;
}
int main(void)
{

int ax;
int by;
int no;
int x;
int y;
char key[100];//这里
for(x=0;x<100;x++)
{
key[x]=0;
}
x=0;

ax=6;
by=5;
x=5;
y=5;

no=xyprint(ax,by);

no=xprint(x,by,y);
printf("\n\n\n\n\n\n");
gets(key);

for(no=0;no<50;no++){

switch(key[no]){
case 48:key[no]=0;break;
case 49:key[no]=1;break;
case 50:key[no]=2;break;
case 51:key[no]=3;break;
case 52:key[no]=4;break;
case 53:key[no]=5;break;
case 54:key[no]=6;break;
case 55:key[no]=7;break;
case 56:key[no]=8;break;
case 57:key[no]=9;break;
default:key[no]=0;
}

}
for(no=0;key[no]<5;no++)//这里
{
/*
switch(key[no]){
case 48:key[no]=0;break;
case 49:key[no]=1;break;
case 50:key[no]=2;break;
case 51:key[no]=3;break;
case 52:key[no]=4;break;
case 53:key[no]=5;break;
case 54:key[no]=6;break;
case 55:key[no]=7;break;
case 56:key[no]=8;break;
case 57:key[no]=9;break;
default:key[no]=0;
} */
switch(key[no]){
case 1:;
case 2:y=mov(x,y,key[no]);break;
case 3:;
case 4:x=mov(x,y,key[no]);break;
default:printf("wrony key");goto end;
}
}
puts(key);
no=tf(x,y,ax,by);
if(no!=0)
{printf("sure");}
else
{printf("you have to try again");}
end:return 0;
}

‘伍’ c语言中内存不能为written是什么意思

内存不能为written,一般来说是访问了非法内存或者出现了内存越界。
你检查一下你的代码。

‘陆’ C语言 该内存不能为written

scanf("%c",x);

修改为

scanf("%c",&x);

{x=x-32,printf("%c",x);} 中间的逗号 换成分号

‘柒’ c语言编写好程序运行提示内存不能为written

操作系统对内存块都有只读和写的标示。数组的下标超过数组范围时,就会非法访问了。最常见的崩溃就是数组越界,你这里就是越界问题。

‘捌’ C语言 编辑内存不能为WRITTEN,求解,输入循环的第二次循环就报错。

内存不能为"Read"或"written"(原因以及解决方案):
(【sql1981】原创答案,引用请说明原作者:sql1981,未通知原作者严禁复制本答案!!)
系统出现内存不能为"Read"或"written"的原因:

1、驱动不稳定,与系统不兼容,这最容易出现内存不能为 Read 或者文件保护

2、系统安装了一个或者多个流氓软件,这出现 IE 或者系统崩溃的机会也比较大,也有可能出现文件保护

3、系统加载的程序或者系统正在运行的程序之间有冲突,尤其是部分杀毒软件监控程序

4、系统本身存在漏洞,导致容易受到网络攻击。

5、病毒问题也是主要导致内存不能为 Read、文件保护、Explorer.exe 错误……

6、如果在玩游戏时候出现内存不能为 Read,则很大可能是显卡驱动不适合(这里的不适合有不适合该游戏、不适合电脑的显卡),也有可能是 DX9.0C 版本不够新或者不符合该游戏、显卡驱动

7、部分软件本身自身不足的问题

8、电脑硬件过热,也是导致内存不能为 Read 的原因之一。

9、电脑内存与主板兼容性不好也是导致内存不能为 Read 的致命原因!

提供几种解决方案:
1、一次运行注册所有dll,方法如下:

开始——运行,输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
这个命令你慢慢输,仔细点,输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再尝试之前的操作,看还有没有出现不能为read的现象。

2、在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。
另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。
如果以上两种方法并不能完全解决问题,你试着用一下360安全卫士的的“IE修复”或其他类似软件,并可以查查是否有病毒之类的。〔微软NET.Framework升级到1.1版应该没问题了〕

3、引起这个问题的原因很多。一般来讲就是给系统打上补丁和更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了!

‘玖’ C语言高手来! 内存不能为written

数组下标越界了。
if(a[i]<temp)
{
for(j=10;j>=i;j--) 这个地方,当 j = 10时,下面的操作是a[11] = a[10]; 而a[11]越界了
a[j+1]=a[j];
a[i]=temp;
break;
}