2015-06-01 4 views
-2

Я должен проверить, являются ли строки, заданные пользователем правильными выражениями. Строки должны выглядеть следующим образом:Разделить массив символов в токенах

int1+int2+int3+int4+... 

, например:

1+5+21 

Является ли правильное выражение, в то время как 1 + а не.

Как я могу это сделать?


Проблема я столкнулся в том, что я определяю строки, как:

char *str; 
str = (char*)malloc(1024*sizeof(char)); 
char **output = strtok(str, "+"); // error 

Так я получаю ошибку сегментации при использовании strtok функции.

+2

'' strtok' return's в '' символ *, а не '' символ **. –

+0

Tokenize от 'strtok' не подходит для такой проверки. Например, '1 +++ 5' – BLUEPIXY

ответ

1

Пример использования strtok, в вашем случае:

#include <string.h> 
#include <stdio.h> 

int function() 
{ 
    char* str = malloc(80); 
    strcpy(str,"1+5+21"); 

    const char s[2] = "+"; 
    char *token; 

    token = strtok(str, s); /* get the first token (1) */ 

    while(token != NULL) /* walk through other tokens */ 
    { 
     // characters manipulation for verification 
    } 

    free(str); 

    return(0); 
}