C에서 '&'
으로 문자열을 토큰으로 분할하는 방법?C에서 문자열을 토큰으로 분할하는 방법은 무엇입니까?
답변
char *token;
char *state;
for (token = strtok_r(input, "&", &state);
token != NULL;
token = strtok_r(NULL, "&", &state))
{
...
}
나는이 같은 (strchr()
사용) 할 것 :
#include <string.h>
char *data = "this&&that&other";
char *next;
char *curr = data;
while ((next = strchr(curr, '&')) != NULL) {
/* process curr to next-1 */
curr = next + 1;
}
/* process the remaining string (the last token) */
strchr(const char *s, int c)
는 s
에 c
의 다음 위치에 대한 포인터를 반환 또는 NULL
'ISN c
경우 t는 s
에 있습니다.
때문에 당신은, 그러나, 나는 strtok()
을 좋아하지 않아, strtok()
을 사용할 수 있습니다
- 이 토큰 화되고는 리터럴 문자열에 대해 작동하지, 또는 매우되지 않도록, 다른 목적으로 문자열을 유지하려는 경우 유용합니다. 이 경우 문자열을 임시로 먼저 복사해야합니다.
- 인접 분리 문자를 병합하므로 문자열이
"a&&b&c"
인 경우"a"
,"b"
및"c"
이 반환됩니다."a"
뒤에 빈 토큰이 없습니다. - 스레드로부터 안전하지 않습니다.
또한 C 구현에 의존한다고 가정합니다. 내 시스템에서 strtok()을 호출하면 문자열 자체가 수정되지 않습니다. 사실 나는 그것이 어떻게 될지조차 모릅니다. 결국 문자열 내의 다른 토큰의 시작 부분에 대한 포인터를 생성해야합니다. –
Cees Meijer :'strtok()'*는 인수 문자열을 수정합니다 - 구분 문자는 '\ 0'으로 대체되므로 반환 된 문자열은 적절하게 종료됩니다. – caf
'strtok' *는 표준을 준수해야하는 경우 문자열을 수정합니다. C 표준에서 : * 이러한 문자가 발견되면 현재 문자를 끝내는 null 문자로 덮어 씁니다 *. 이것은 매우 명백합니다. http://opengroup.org/onlinepubs/009695399/functions/strtok.html. 'strtok()'가 문자열을 수정하지 않는 곳에 코드를 게시 할 수 있습니까? –
아래 예제와 같이 strok() 함수를 사용할 수 있습니다. 그 질문은 "말, 문제는 세부 사항에 대한 낮지 만 (리터럴 문자열을 분할에 대해하지 않습니다처럼
/// Function to parse a string in separate tokens
int parse_string(char pInputString[MAX_STRING_LENGTH],char *Delimiter,
char *pToken[MAX_TOKENS])
{
int i;
i = 0;
pToken[i] = strtok(pInputString, Delimiter);
i++;
while ((pToken[i] = strtok(NULL, Delimiter)) != NULL){
i++;
}
return i;
}
/// The array pTokens[] now contains the pointers to the start of each token in the (unchanged) original string.
sprintf(String,"Token1&Token2");
NrOfParameters = parse_string(String,"&",pTokens);
sprintf("%s, %s",pToken[0],pToken[1]);
- 1. J2ME에서 문자열을 분할하는 방법은 무엇입니까?
- 2. 대문자로 문자열을 분할하는 방법은 무엇입니까?
- 3. C에서 여러 문자로 문자열을 분할하는 방법이 있습니까?
- 4. C#에서이 문자열을 분할하는 방법은 무엇입니까?
- 5. 다른 문자열로 문자열을 분할하는 방법은 무엇입니까?
- 6. 정규식을 사용하여 문자열을 문자로 분할하는 방법은 무엇입니까?
- 7. T-SQL에서 주소 문자열을 분할하는 방법은 무엇입니까?
- 8. PHP로 긴 문자열을 분할하는 방법은 무엇입니까?
- 9. 문자열을 한 번 분할하는 방법은 무엇입니까?
- 10. AutoIt에서 공백으로 바이트 문자열을 분할하는 방법은 무엇입니까?
- 11. vba에서 여러 delimeter로 문자열을 분할하는 방법은 무엇입니까?
- 12. 객관적인 C에서 두 개의 문자열로 숫자와 문자를 분할하는 방법은 무엇입니까?
- 13. 코드를 중단하지 않고 Objective-C에서 문자열을 분할하는 방법
- 14. PHP에서 문자열을 분할하는 방법
- 15. 문자열을 분할하는 복잡한 정규식
- 16. PHP로 문자열을 분할하는 방법
- 17. 여러 문자열을 분할하는 방법
- 18. 문자열을 float과 비교하는 방법은 무엇입니까? 목표 C에서
- 19. C에서 문자열을 반환하는 함수에서 문자열을 캡처하는 방법은 무엇입니까?
- 20. 고정 된 문자 순서로 문자열을 분할하는 방법은 무엇입니까?
- 21. 문자를 3 번 반복 할 때마다 문자열을 분할하는 방법은 무엇입니까?
- 22. C#에서 문자열을 여러 문자열로 분할하는 방법은 무엇입니까?
- 23. CMAKE를 사용하여 문자열을 목록으로 분할하는 일반적인 방법은 무엇입니까?
- 24. PHP에서 공백, 숫자 및 따옴표로 문자열을 분할하는 방법은 무엇입니까?
- 25. 하위 문자열을 사용하여 문자열을 분할하는 방법
- 26. 긴 문자열을 고정 배열 항목으로 분할하는 방법
- 27. vC++에서 문자열을 분할하는 방법?
- 28. 이 문자열을 분할하는 정규 표현식
- 29. 문자열을 단어로 분할하는 방법. 예 : "stringintowords"-> "문자열을 단어로"?
- 30. SFSB Facade를 분할하는 방법은 무엇입니까?
http://stackoverflow.com/questions/266357/tokenizing-strings-in-c –
이 보이는 작업"). 이것은 OP가 원하는 것일 수도 아닐 수도 있습니다. 우리는 그에게 그 사실을 설명 할 기회를 주어야합니다. 문자열이 리터럴 문자열로 분할되었거나 읽기 전용입니까? –