【发布时间】:2014-12-17 17:51:43
【问题描述】:
所以我试图读取行,然后用 strtok 将它们分成两部分。因此,如果我要阅读“nice dog”,它将首先打印我阅读的内容,然后在下一行使用 strtok 命令“nice”和“dog”进行打印。但是在第二次输入之后我得到了分段错误。另外,free(buf) 是做什么的?我已经看到错误出现在这一行:“strcpy(name, strtok(NULL, ""));"这是代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buf;
char command[32];
char name[32];
while((buf = readline("\n"))!=NULL)
{
if (strcmp(buf,"exit")==0)
break;
printf("%s\n",buf);
strcpy(command, strtok(buf, " "));
printf("%s\n", command);
strcpy(name, strtok(NULL, " "));
printf("%s\n", name);
if(buf[0]!=NULL)
add_history(buf);
}
free(buf);
return 0;
}
【问题讨论】:
-
readline是做什么的? -
在使用之前检查您的
strtok输出。 -
读取您的线路输入
-
Free 释放从堆中获得的内存,因此使用 malloc 或相关函数之一。每当你 malloc 某些东西时,你必须释放它,否则你会出现内存泄漏
-
readline可能有问题。给我们看readline的代码就更清楚了。
标签: c