Народ может есть у кого переписанный на С++ аналог функции strtok или wcstok.Написать сам не смог Чтобы было ясно о чём речь привожу аналог функции strstr Код (Text): LPSTR WINAPI fstrstr(LPSTR str1,LPSTR str2,INT size1, INT size2) { LPSTR result = NULL; if(size2 > size1) return result; for(INT i = 0; i < size1; i++) { if(str1[i] == str2[0]) { for(INT j = 0; j < size2; j++) { if(str1[i+j] == str2[j]) { result = (LPSTR)(str1+i); } else result = NULL; } if(result != NULL) { return result; } } } return result; } Или может подкинет кто функцию которая разобьёт строку по заданному символу и запишет в массив как например функция explode() в php
Да чёт не получается у меня Я просто хотел пропарсить файлик и забит он строками разного размера то есть так примерно Код (Text): aaa:bbbb:ccc AAAAA:DDD:CCCCC CCCCCCCC:AAA:vvvv xxx:asd:CCC И нужно мне было взять сроку из файла и вывести середину то есть из первой строки это bbbb из второй DDD и всё это не используя strtok() даже не спрашивайте почему. Плохо я умею работать со сроками, если не сложно то реализуйте и помогите кодом а не советом
perdimonokl Great уже подсказал - используй функцию strchr. К примеру так: char* beg = strchr(line, ':'); char* end = strchr(beg + 1, ':'); *end = 0; strcpy(Buffer, beg + 1); Это без обработки всяких нехороших ситуаций (beg != NULL, end != NULL). Исходная строка line тоже портится, чтобы не портилась, нужно восстанавливать байт по адресу end.
Самописный аналог strtok_s (потокобезопасный вариант strtok, подробности в MSDN): Код (Text): char * __cdecl strtk_s(char *String, const char *Control, char **Context) { char *token; const char *ctl; if (!String) { String = *Context; } for ( ; *String != 0 ; String++) { for (ctl = Control; *ctl != 0 && *ctl != *String; ctl++) ; if (*ctl == 0) { break; } } token = String; for ( ; *String != 0 ; String++) { for (ctl = Control; *ctl != 0 && *ctl != *String; ctl++) ; if (*ctl != 0) { *String++ = 0; break; } } *Context = String; if (token == String) { return NULL; } else { return token; } }