2014-10-29 47 views
1

我有几次在OJ系统上进行代码测试,并且结果在特定的第3次和第4次运行中持续报告错误“运行时错误退出代码6”,其中一次测试包含10次运行。除了这两次失败的跑步之外,其他人都是正确的。如何解决C代码中报告的错误“运行时错误退出代码6”?

我在网上查到“运行时错误退出码6”的意思是“无效的文件句柄”,但我甚至没有文件变量或任何涉及到文件的进程。

我试图删除不理想的头文件,只剩下两个头文件: #include <stdio.h> #include<string> 但它没有工作。 所以也许你们中的一些人可以帮助我离开这里。非常感谢......我用C.

这里是我的代码

scanf("%d\n",&n); 

    int *A = new int[n]; 

    for(i = 1; i<n+1; i++) { 
     scanf("%d ",&A[i]); 
    } 
    scanf("\n"); 
+3

如果您希望我们提供帮助,您需要发布您的代码。我们是好的,但不mindreaders ..(也''#包括'应该'#包括') – 2014-10-29 01:24:16

+0

请张贴您的代码!但是,SIGABRT是信号编号6 ..您应该使用#include 。你正在使用哪种编译器? – gmas80 2014-10-29 01:24:20

+0

我发布了我的代码,并将头文件更改为string.h。 OJ系统使用gcc编译器。 – Moby41 2014-10-29 01:37:58

回答

1
int *A = new int[n]; 

for(i = 1; i<n+1; i++) { 
    scanf("%d ",&A[i]); 
} 

A的合法指数取值范围为[0,N-1]而不是[1,N] 。因此该循环的最后一个scanf()写出数组边界。

+0

,但对于其他八个运行,它进行得很顺利......好吧,我会尝试根据你的建议进行调整 – Moby41 2014-10-29 01:45:07

+0

伟大的,我把数组的大小扩展到n + 1,现在它可以工作。谢谢。 – Moby41 2014-10-29 01:56:18