更新版本:
因此,我试图在不使用 scanf/fgets 的情况下使这段代码正常工作。从用户那里获取字符,使用嵌套在 for 循环中的 while 循环将其放入指针数组中。
#define WORDLENGTH 15 #define MAXLINE 1000 int main() { char *line[MAXLINE]; int i = 0; int j; int n; char c; for (n=0; c!=EOF; n){ char *tmp = (char *) malloc(256); while ((c=getchar())!=' '){ tmp[i]=c; // This is no longer updating for some reason. i++; } line[n++]=tmp; // i=0; printf("\n%s\n",line[n]); //Seg fault here } for(j = 0; j (lessthan) n; j++){ printf("\n%s\n", line[j]); free (line[j]); } return 0;
所以,现在我遇到了段错误。不确定为什么 tmp[i] 没有正确更新。仍在努力。
到目前为止,我从未在整个学期中学到这么多关于编程的知识。请继续帮助我学习。我喜欢这个。
最佳答案
您打印 line[i]
并且在此之前,您将 i
设置为 0。改为打印 line[n]
。
此外,您忘记了终止字符 0。如果您将 tmp
设为 char 数组,然后在分配给 line[n]
之前将其设为 strdup
,您的代码将变得更简单。
关于C - Malloc 问题(也许是别的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331839/