當前位置:首頁 » 編程語言 » c語言越界怎麼寫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言越界怎麼寫

發布時間: 2022-09-21 19:57:39

1. c語言數組越界怎麼處理vc6.0

#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n;
printf("The number of country is:");
scanf("%d",&n);
char a[100][100],max[100];
printf("Your country name:\n");
getchar();
for(i=0;i<n;i++)
gets(a[i]);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
if(strcmp(a[j],a[j+1])>0)
{
strcpy(max,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],max);
}
}
for(i=0;i<n+1;i++)
{
puts(a[i]);
}

return 0;
}
你的程序寫的不錯,不是數組越界而是換行符干擾,加一個getchar吸收一下換行符就好啦

2. C語言字元數組越界輸出

不是這樣的,雖然你只申請了10個,
但strlen()測試是以'\0'為數組結束的標志的,所以,當他檢測a的區域時,一直到a[9]都沒有發現'\0'這個目標,所以,他會繼續查找,直到找到他的"愛人\0"方止..sizeof()同理..
所以當你輸入12個'w'時,strlen(a)會等於12,sizeof(a)同樣也是12,所以會得到12個w..這其實是非法的,雖然能夠通過編譯,但可以說這是個很危險bug..
而且b數組也存在危險,因為它並沒有以'\0'結束,所以,你用strlen(b),測試它時,結果是不確定的,取決於它在b[9]後面的那個位元組上找到'\0'字元..

3. C語言數組越界問題

數組越界已經發生了,只是沒有立刻提示出來而已
這就是越界的後果
ISO
C說這種代碼「行為是未定義的」(the
behavior
is
undefined),也就是說任何後果都是合理的,包括編譯時報錯、運行時出錯、看似正常的運行……

4. C語言數組越界

#include"stdio.h"
#include"string.h"
int equal(char* p_c,char c)
{
int a = strlen(p_c);
for(int i = 0;i < a;i++)
{
if(*(p_c + i) == c)
{
return 1;
}
}
return 0;
}
void Union(char* p_c1,char* p_c2)
{
char* p = p_c1;
int a = strlen(p_c1);
int b = strlen(p_c2);
p_c1 = p_c1 + a;
while((*p_c2) != '\0')
{
char temp = *p_c2;
if(equal(p,temp));
else
{
*p_c1 = *p_c2;
p_c1++;
}
p_c2++;
}
*p_c2='\0';
}
void main()
{
char a[100] = "maxuefeng";
puts(a);
char b[20] = "dingfangjie";
puts(b);
Union(a,b);
puts(a);
}
如上,在你的union函數中加個
*p_c2='\0';
這樣才算是字元串合並了。
應該用較大的數組,你要確定合並後的長度小於數組長度,這樣它才可以運行,輸出,否則,就會越界,例如a[10],就不行,因為長度太小了,合並後a[10]放不下字元串。

5. C語言指針越界問題,大神指教!!!

*p是指向int類型的指針,a為數組首地址,這些理解都是對的,

但是,p沒有被初始化啊,你能直接是用沒有被初始化的變數嘛,那肯定是不行的啊.

所以正確的做法先給p綁定堆內存就可以這樣寫了.

#include<iostream>
usingnamespacestd;
intmain()
{

int**p=newint*;
intArray[10]={1,2,3,4,5,6};
*p=Array;
cout<<(*p)[1]<<endl;

system("pause");
return0;
}
編譯完全通過.這里不貼出來了.點我頭像進群.

6. 關於C語言一維數組越界

#include <stdio.h>
#include<string.h>
#define N 4
main()
{
char a[N],i=0,len,j,t; //a[N]是a[4]數據共4個元素:a[0],a[1],a[2],a[3](下標從0開始)。
for(;i<N;i++) // i < 5,最大為N,將5改為N
{
printf("請輸入一個5位數:");
scanf_s("%c",&a[i]); // 當i為4時,,出錯
}
len=strlen(a);
if(len==N) //5改為N
{
j=N;
for(i=0;i<N;i++)
{
t=a[i];
a[i]=a[j];
a[j]=t;
j--;
}
}
else
printf("你輸入的數不是4位數。"); //如果你想弄成5位數,直接將N改為5: #define N 5
}