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

4

1 回答 1

1

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

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

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

于 2013-03-09T03:14:02.250 回答