『壹』 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;
}