2013-03-09 74 views
-1
#define String char* 
#define FileP FILE* 
#define null ((void*) 0) 
#include "defs.h" 

int main(int argc, char** argv) { 

    Stack stack; 
    init(&stack); 

    FileP file = readp("Props.props"); 

    if (file == null){ 
     printf("Unable to Load\n"); 
     exit(1); 
    } 

    String buffer; 
    int m = 0; 
    char ch; 

    while (!feof(file)) { 
     ch = getc(file); 
     if (ch != ' ') { 
      *(buffer + (m++)) = ch; 
     } else { 
      push(&stack, buffer); 
      m = 0; 
     } 
    } 

    int i; 

    for (i = 0; i < MAX_SIZE; i++) { 
     printf("%s\n", pop(&stack)); 
    } 

    fclose(file); 

    return 0; 

} 

defs.h包含所有的#defines,但我将它们包含在这里,让你知道它们是什么。该程序打开一个名为“props.props”的文本文件并读取每个字符串,然后将它们存储到堆栈中,最后打印出堆栈。运行时没有任何反应,只是由于运行时错误而退出。这是为什么发生?这个程序为什么会有运行时错误?

+0

究竟是哪个运行时错误向您显示? – SRJ 2013-03-09 03:27:05

+0

它没有显示我,它只是表示运行时错误 – Richard 2013-03-09 03:30:59

+0

请提供像readp()等功能的定义...它很难从此代码跟踪。 – SRJ 2013-03-09 03:34:23

回答

1

buffer未初始化。您需要分配内存

buffer = (char*) malloc(n * sizeof (char)); 

其中n是您需要存储的字符数。 此外,该文件似乎并未在任何地方打开(fopen)。什么是readp

+0

readp在其中有fopen方法,谢谢,我通常有这样的错误,非常明显。 – Richard 2013-03-09 03:20:46

相关问题