【发布时间】:2010-02-18 01:59:51
【问题描述】:
这是我第一次在这里发布问题 - 我搜索了类似的问题,但没有找到。
这是我标题中的 sn-p:
#define LINE_LEN_MAX 256
typedef struct line_description {
char buffer[LINE_LEN_MAX + 1];
[...]
} line;
这是我主要功能的 sn-p:
int main(int argc, char *argv[]) {
line *lineRead;
//input: valid FILE *, read from cmdline
//char buffer[LINE_LEN_MAX + 1];
while(fgets(lineRead->buffer, LINE_LEN_MAX + 1, input) != NULL) {
[...]
memset(lineRead->buffer, 0, LINE_LEN_MAX + 1);
}
}
我不断收到段错误。如果我注释掉“memset()”行,我可以在收到段错误之前从输入文件中准确读取 3 行。
但是,如果我用本地 char[] 替换 'lineRead->buffer',我就可以完美地读取我的输入文件。
我对这里的结构有什么不了解的地方?我想我想要的是一个指向结构内 char[] 开头的指针,但显然这不是正在发生的事情。
编辑:抱歉,忘了说明:我这里没有使用动态内存。
【问题讨论】:
-
内存分配问题。 lineRead 从未被分配。
标签: c arrays struct segmentation-fault fgets