2013-07-09 3 views
0

Здравствуйте, я пытаюсь извлечь небольшую строку из большей строки, в основном мне присваивается строка с разделителями, и мне нужно ее переупорядочить. так что давайте скажем, что у меня «@ the president #» @ показано место, которое я должен запустить, а # - конец подстроки. Я использую strchr, чтобы получить указатель на символ @, и я знаю, что мне нужно выполнить поиск, пока не найду символ #. Однако не существует функции от x до y, и я не уверен, как перейти от указателя char a к символу #.C Методы подстановки

char *garbage = "@the president#"; 
    int count = 0; 
    char a = strchr(garbage, @); 
    char *sentence = NULL; 
    while(start at a, garbage[count] != #){ 
     char sentence[count] = garbage[count]; 
     count++; 
    } 
+1

@abelenky Вы правы, я отправил остальную часть кода и где переменные берутся, я надеюсь, что ясно, что я не понимаю, как это сделать. –

ответ

5

использовать что-то вроде этого:

const char* posAtSign = strchr(searchString,'@'); 
if (posAtSign != NULL) { 
    const char* posPoundSign = strchr(posAtSign+1,'#'); 
    if (posPoundSign != NULL) { 
     const int numChars = posPoundSign - posAtSign - 1; 
     strncpy(substringBuffer,posAtSign+1,numChars); 
    } 
} 

Испытано код:

char searchString[] = "@the president#"; 
char substringBuffer[128]; 

const char* posAtSign = strchr(searchString,'@'); 
if (posAtSign != NULL) { 
    const char* posPoundSign = strchr(posAtSign+1,'#'); 
    if (posPoundSign != NULL) { 
     const int numChars = posPoundSign - posAtSign - 1; 
     strncpy(substringBuffer,posAtSign+1,numChars); 
     substringBuffer[numChars] = '\0'; 
     printf("substring: '%s'", substringBuffer); 
    } 
} 
+0

Я думаю, что это сработает, но я получаю ошибку сегментации в строке strncpy(). Это не дает мне никакой другой информации, кроме ошибки сегментации. Любые идеи почему? –

+0

2 вещи, которые нужно проверить: (1) возможно, хорошо проверить, есть ли numChars> 0 перед strncpy, а (2) - подстрокаBuffer, выделенная достаточно места для хранения numChars + 1? –

+0

Когда я печатаю numChars, оно всегда> 0, а substringBuffer объявляется как char * substringBuffer (должно быть много места). Могут ли быть Linux-серверы, которые его завинчивают? –

Смежные вопросы