【发布时间】:2011-05-18 22:43:53
【问题描述】:
嗯,我一直在做这件事,我确切地知道问题出在哪里,但不知道如何解决它。我已经知道 fgets 和 scanf 对于这个程序会更好,但我不能那样做。
该程序大约在 10 分钟前运行,然后我对其进行了更改,但出现了 seg 错误。然后我把它改回来,仍然有一个段错误。无论如何,我相信新鲜的眼睛会马上看到它。试试看:D
PS:请注意我的(小于)而不是
#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(sizeof(char)*WORDLENGTH);
while ((c=getchar())!=' ')
tmp[i++]=c;
line[n]=tmp;
i=0;
printf("\n%s\n",line[n]); //
}
for(j = 0; j < n; j++){
printf("\n%s\n", line[j]);
free (line[j]);
}
return 0;
}
【问题讨论】:
-
我没有看到你初始化过你的 char *line[MAXLINE];
-
高亮你的代码并点击 CTRL+K 或者高亮它并点击
101图标 -
哦。如果我是一个优秀的程序员,我会怎么做?
-
@SiegeX - 我可以在它周围放两个(无论波浪号键上的其他东西的名称是什么)吗?
<显然是这样! -
顺便说一句,你打电话给
printf("\n%s\n", line[n])。请注意,line[n] 是一个没有空终止符的字符,\0。这将打印一个垃圾值流。
标签: c arrays pointers segmentation-fault