2013-04-14 44 views
-5

gcc編譯在17行缺少終止>字符在第17行

#include<stdio.h> 
void main() 
{ 
    int a[8]={4,9,15,20}; 
    int b[4]={3,5,10,13}; 
    int i,j,n=3; 
    for(i=0;i<=n;i++) 
    { 
     if(b[i]<a[i]) 
     { 
      for(j=n;j>=i;j--) 
      { 
       a[j+1]=a[j]; 
      } 
     a[i]=b[i]; 
     n=n+1; 
     } 
     else 
     { 
      for(j=n;j>=i;j--) 
      { 
       a[j+1]=a[j]; 
      } 
     a[i+1]=b[i]; 
     n++; 
     } 
    } 
    for(i=0;i<8;i++) 
    printf(" %d", a[i]); 
} 
+1

這是第17行,它給了什麼錯誤? – avakar

+0

缺少終止>字符 – arj

+1

那你爲什麼要糾正錯誤?在你的代碼中沒有這樣的錯誤,我可以找到:) –

回答

0

給出錯誤您是代碼給出段故障,因爲你的數組索引尺寸之後訪問存儲器。

調試它,我只是增加了兩個喜歡在你的代碼打印n, i , j

if(b[i]<a[i]) 
{ 
    for(j=n;j>=i;j--) 
    { 
     a[j+1]=a[j]; 
    } 
    a[i]=b[i]; 
    n = n+1;   "<---- 1 Correction need here" 
    printf("In IF %d %d %d\n", i, j, n); 
} 
else 
{ 
    for(j=n;j>=i;j--) 
    { 
     a[j+1]=a[j]; 
    } 
    a[i+1]=b[i]; 
    n++;    "<----2 Correction need here" 
    printf("In Else %d %d %d\n", i, j, n); 
} 

其輸出是:

$ ./a.out 
In IF 0 -1 4 
In Else 1 0 5 
In Else 2 1 6 
In Else 3 2 7 
In Else 4 3 8  
In IF 5 4 9  
In IF 6 5 10  <-- i, j, n "buffer overflow" 
In IF 7 6 11  <-- i, j, n 
In IF 8 7 12  <-- i, j, n 
In IF 20 11 13  <-- i, j, n 
3 4 5 10 13 5 5 10 

建議不要在你的循環變化對改變n你的邏輯這是

+0

問題是將排序後的數組a和b合併爲一個排序順序。 – arj