2012-07-21 4 views
0

Вечер, на который каждый может надеяться, что вы можете помочь вам. Я пытаюсь найти ответ на эту проблему. Мне нужно прочитать данные из строки ниже, выполнив поиск тегов. i.e IZTAG UKPART и т. д. Однако код, который я использую, не годится, поскольку он хранит только 1-ю часть его, например UKPART = 12999, и пропускает -0112. Есть ли лучший способ поиска строк?Получить определенные части из строки, используя C

UPDATE SO FAR.

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

int main() 
{ 
    // in my application this comes from the handle and readfile 
    char buffer[255]="TEST999.UKPART=12999-0112...ISUE-125" ;  
    // 
    int i; 
    int codes[256]; 
    char *pos = buffer; 
    size_t current = 0; 
    // 
     char buffer2[255]; 
    if ((pos=strstr(pos, "UKPART")) != NULL) { 
     strcpy (buffer2, pos); // buffer2 <= "UKPART=12999-0112...ISUE-125" 
    } 

     printf("%s\n", buffer2); 
    system("pause"); 
    return 0; 
} 

теперь работает НО ВЕРНУТЬ ВЕСЬ STRING КАК ВЫХОД МНЕ НУЖНО ТОЛЬКО ВЕРНУТЬ UKPART НАПРИМЕР БЛАГОДАРЯ ПОКА :-)

+1

Хотя это не полностью определено, что вы хотите, расщепление с [регулярное выражение] (http://en.wikipedia.org/wiki/Regular_expression) является более гибким. – tiwo

+0

@tiwo: отличное предложение. Вот еще одна ссылка: http://pubs.opengroup.org/onlinepubs/009695399/functions/regcomp.html – paulsm4

+0

Ваш вопрос не имеет смысла без кода, поэтому я вернул его удаление. – icktoofay

ответ

2
  1. strstr() абсолютно правильный путь для поиска подстроки. Cool :)

  2. Похоже, вы хотите что-то отличное от «sscanf()» для копирования подстроки.

В: Почему бы просто не использовать вместо этого «strcpy()»?

EXAMPLE: 
    char buffer[255]="IZTAG-12345...UKPART=12999-0112...ISUE-125" ;  
    char buffer2[255]; 
    if ((pos=strstr(pos, "UKPART")) != NULL) { 
     strcpy (buffer2, pos); // buffer2 <= "UKPART=12999-0112...ISUE-125" 
+0

Я никогда не использовал эту функцию, прежде чем сожалеть, что я только что перешел с php. Вы хотите просто заменить sscanf на strcpy? Извините за глупый вопрос. –

+0

В: Что именно «не работает»? Если возможно, отправьте сообщение об ошибке. В: Вы не забыли объявить «buffer2», прежде чем использовать его? Является ли «коды» лучшей переменной для чтения данных? САМЫЙ ВАЖНЫЙ: Q: Является ли «UKPART = 12999-0112 ... ISUE-125» результатом, который вы хотите прочитать? – paulsm4

+0

Извините, я не дал понять, что мне нужен только UKPART = 12999-0112, который должен быть возвращен, а не конец строки. Поскольку это еще один тег. Вывод теперь UKPART = 12999-0112 ... ISUE-125 должен быть UKPART = 12999-0112 Спасибо, до сих пор paul. –

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