【发布时间】:2016-07-31 12:44:09
【问题描述】:
我正在编写以下代码来根据字符串的长度处理字符串,但遇到了分段错误,搜索了一下,发现它与指针有关,但我无法找出相同的原因。
#include <string.h>
#include <iostream.h>
#include <stdio.h>
int main()
{
char input[500];
strcpy(input, "quick brown fox jumps on lazy dog");
const char s[2] = " ";
unsigned int num = 7;
unsigned int lent;
cin >> num;
char *token;
token = strtok(input, s);
while( token != NULL )
{
lent= strlen(token);
if(lent <= num)
printf( " %s", token );
token = strtok(NULL, s);
if(strlen(token) <= (num-lent))
printf("%s",token );
printf("\n");
}
return(0);
}
【问题讨论】:
-
你试过使用调试器吗?
-
现在正是你学习的好时机
gdb。 -
您没有检查循环中的
strtok是否返回NULL。旁注:您的代码几乎完全是 C,C 没有任何问题,但如果您想编写 C++,可能需要阅读过去 5 年出版的一本好 C++ 书籍。 -
关键是这类问题非常普遍,以至于人们制作了一个工具来简化它。它被称为调试器,它会告诉您错误的确切位置,并让您查看变量以了解失败的原因。你应该习惯一个。
-
所有这些工作,在 C++ 中,您只需要to do this。