【发布时间】:2016-01-15 21:30:14
【问题描述】:
我正在尝试将句子列表存储在二维指针数组中。下面的代码在循环被评估后给出了一个分段错误(我用 printf 语句检查;循环内没有执行任何语句):
int main( int argc, char** argv){
char *inputarray[MAX_LINE];
int count = 0;
//char cpy[MAX_LENGTH] <---- This one doesn't work either
char *cpy = (char*) calloc (MAX_LENGTH, sizeof(char));
while ( count <= MAX_LINE && fgets(cpy, MAX_LENGTH, stdin)){
int str_len = strlen(cpy);
cpy[--str_len] = '\0';
inputarray[count++] = reverse(cpy, str_len);
}
printOutput(inputarray, count);
return 0;
}
现在已经尝试调试 3 个多小时,但无济于事。帮助任何人?
【问题讨论】:
-
什么是 MAX_LENGTH?你在给这个喂什么?你能显示输入的前 MAX_LENGTH + 1 个字符吗?
-
你能展示一下反向函数在做什么吗?其他几点注意事项:1)不要强制返回 calloc(使用 c 时)。它可以掩盖重要的警告并且不需要 2) fgets 将终止字符串,但看起来您正在截断输入的最后一个字符,这是故意的吗?
-
是的,摆脱\n
标签: c pointers segmentation-fault fgets