为什么这个程序有运行时错误?

时间:2013-03-09 03:09:50

标签: c file io stack

#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”的文本文件,读取每个字符串,然后将它们存储到堆栈中,最后打印出堆栈。在运行时没有任何事情发生,只是由于运行时错误而退出。为什么会这样?

1 个答案:

答案 0 :(得分:1)

buffer未初始化。你需要用

分配内存
buffer = (char*) malloc(n * sizeof (char));

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