【发布时间】:2015-11-26 20:00:04
【问题描述】:
我是 C 新手。
我正在尝试消除“.,;?!”使用 strtok 从字符串中创建一个没有任何标点符号的简单字符串,但编译后它给了我一个“分段错误”。为什么以及如何解决?
char simple_s[100];
char delim[20];
memset(simple_s,0,100);
memset(delim,0,100);
strcpy(delim,strtok(s,",.;:!? "));
while(delim != NULL) {
strcat(simple_s,delim);
strcpy(delim,strtok(NULL,",.;:!? "));
}
printf("%s",simple_s);
【问题讨论】:
-
char delim[20];后跟memset(delim,0,100);不好! -
strcpy(delim,strtok(s,",.;:!? "));之前你检查delimNULL不好! -
我删除了它,但错误仍然存在。
-
你删除了什么?您将尺寸错误归零。这就是为什么这样做是一种很好的做法:
memset(delim,0,sizeof(delim)); -
while(delim != NULL)- 这等同于while(1),因为delim永远不会是NULL(你甚至不能改变它)。