2016-07-31 3 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 перед любой операцией, которая может разыменовать ее.