2016-07-31 97 views
-4

我正在写下面的代码来处理字符串的长度的基础上,但我得到了分段错误,搜索它并发现它与指针有关,但无法找出原因对于相同的。无法找到分割故障的原因

#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); 
} 
+3

您是否尝试过使用调试器? –

+2

这是您学习'gdb'的好时机。 – Shravan40

+0

我无法得到您的观点 – OshoParth

回答

4

token = strtok(NULL, s);

你达到你的输入字符串的结尾。并且token在此行变为NULL。然而,你立即跟着strlen(token)

检查token之前的任何可能取消它的操作。