2014-05-04 35 views
-1

我的程序会正常运行并显示信息,但只要我按任意键继续我得到的程序已停止工作屏幕,我不知道为什么,这里是我的代码我的c程序在运行完成后崩溃

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(int argc, char *argv[]) 
{ 
    char A[50][30]; 
    printf("Hello \n"); 

    FILE *file; 

    file = fopen("Strings.dat","r"); 



    printf("The contents of the array are :\n"); 

    int ch = 0; 

    while(fgets(A[ch], 30, file)) 
    { 
    int length = strlen(A[ch]); 
    /* 
    if((A[ch][length-1]) == '\n') 
    { 
    A[ch][length-1] = NULL; 
    } 
*/ 
    ch++; 
    } 
    fclose(file); 
    printf("%s",A[0]); 
    system("PAUSE"); 
} 

任何人都可以解释我做错了什么吗?

如果你想知道注释代码被注释掉了,因为它给了我一个警告“【警告】赋值时将指针整数,未作施放[默认启用]”我想取出来会解决我的问题

+0

我看到的唯一情况是你没有检查文件是否正确打开。如果'file'是'NULL',那么文件没有打开。 – ooga

+0

噢好 - 我的大部分应用程序在运行时崩溃。 –

+1

仔细检查您正在阅读的文件的内容和大小。有可能你正在写数组的边界之外并砸碎你的堆栈,并且随着程序结束和堆栈展开而显现出来。 – Duck

回答

1

尝试在暂停语句后添加exit(0);。这会告诉你的程序完全退出。 0只是一个返回值。你可以返回任何你想要的,但0是“没有错误”或类似的标准。

编辑:第二个想法,只需在最后添加return 0;。你甚至可能不需要退出(0)语句(这取决于你如何运行你的程序)。

SECOND EDIT:exit()语句只是强制关闭你的应用程序。还有一个潜在的问题。给我一点,我会尽力为你追踪。

希望这会有所帮助!

+0

它为什么会有帮助? – Duck

+0

偶尔我有一个类似的问题,当我不告诉程序正常退出。我不确定它是否与程序的运行方式或内容有关。我通常在控制台上运行我的C程序,也许这只适用于这些情况?尝试它不会有什么伤害。 – DerStrom8

+0

是这行代码阻止了我的程序崩溃 – user3393513