2016-07-17 2 views
-3

기본적으로 쉼표로 구분 된 숫자를 추출 할 때 문자열에 충분한 공간을 할당하려고합니다. 어떻게해야합니까?길이를 모른 채 C로 문자열을 초기화하고 문자를 계속 추가 할 수 있습니까?

내 알고리즘은 색인 0에서 마지막 색인까지 문자열을 반복하고 각 숫자를 temp라는 문자열에 배치하고 쉼표를 찾을 때 문자열을 인쇄합니다. 당신은 몇 가지 옵션이

char* string = "123,4567,8910"; 
char* delimiter = ","; 

size_t i; 
// char temp[] = "" ???? supposed to be a dynamic string/array whatever 
for (i = 0; i < strlen(string); i++) { 
    if (string[i] == ',') { 
     // printf("%s", temp); 
     // clear temp string 
    } else { 
     // append the character string[i] to temp 
    } 
} 
+0

왜 이렇게 하시겠습니까? X Y 문제와 같은 잘못된 접근입니다. 이 문제를 해결하기위한 제한 사항과 그 원인을 알려주십시오. 그렇지 않으면 원하는대로 할 수있는 좋은 이유가 없습니다. 또한 쉼표를 찾을 때 단순히 문자열을 출력하려고한다면'fputc()'를 사용하고 발견 한 순간에 각 문자를 인쇄하고 쉼표로 출력 할 때는'\ n'을 사용하여 버퍼를 지 웁니다 다음 줄로 가라. –

+0

첫 번째 문제는 [tag : c] 문자열을 이해하지 못하는 것입니다. 만약 당신이 그들을 이해한다면'for (i = 0; i

답변

1

... 당신은 string을 반복 할 수와 숫자의 수를 계산

는, 그에 따라 버퍼를 할당 할 수 있습니다. 그것은 문자열을 두 번 반복하는 것을 의미합니다.

malloc으로 버퍼를 할당 한 다음 필요에 따라 realloc으로 확장 할 수 있습니다. 이것은 문자열을 한 번만 반복하면되지만 상당히 복잡한 메모리 관리 춤을 춥니 다.

+0

ahh 감사합니다.이 답변은 제가 권자님을 찾고있는 답변입니다. – user2980691

관련 문제