2012-02-24 2 views
1

C에서 문자열에서 공백을 찾을 때까지 문자열에서 처음 n 문자를 추출하려면 어떻게해야합니까? 본질적으로, 어떤 C 함수가 나를위한 다음 공간의 위치를 ​​찾고 어떤 C 함수가 나에게 부분 문자열을 줄 것인가? C++의 관점에서 생각하고 있습니다. 같은 :C 문자열 함수

string str = "Help me Please!"; 
int blankPos = str.find(' '); 
str.substr(0, blankPos); 

감사합니다,

답변

1
  1. 공간을 찾으려면 strchr을 사용하십시오.
  2. 하위 문자열을 보관할 새 char 버퍼를 할당하십시오.
  3. 부분 문자열을 memcpy으로 버퍼에 복사합니다.
1

힌트 : strchr()

가 좀 더 많은 문자를 입력해야합니다.

0
char* str = "Help me Please"; 
int i =0; 

//Find first space 
while(str[i] != ' '){ 
    i++; 
} 
char* newstr; 
newstr = strndup(str+0,i); 

난 당신이 또한 문자열의 첫 번째 공간을 얻을하면 strchr()를 사용할 수있는 것 같아요. 당신은 그냥 문자열의 첫 번째 부분을 얻을 모두가 제안했다으로 strchr()을 사용하려면

#include <string.h> 

const char *str = "Help me Please"; 

//find space charachter or end of string if no space found 
char *substr, *space = strchr(str, ' '); 
int len = space ? (space-str) : strlen(str); 

//create new string and copy data 
substr = malloc(len+1); 
memcpy(substr, str, len); 
substr[len] = 0; 
+1

'strndup'는 표준 C 함수가 아닙니다. 그리고 그런데 while 상태에서'! ='가되어서는 안됩니까? –

+0

@ChristianRau : 수정 됨. – Ajai

+0

@ChristianRau : 이것이 내가 사용할 수 있다고 생각한 이유입니다 .http : //linux.die.net/man/3/strndup – Ajai

0

그래서 당신이 뭔가를 할 수 있습니다. 공백으로 구분 된 하위 문자열로 문자열을 구분하려는 경우 strtok()을 조사하십시오.

+0

길이에'int'를 사용하면 안됩니다.'size_t'는 올바른 타입입니다. –

1
char str[] = "Help me Please"; // Source string 
char newstr[80];     // Result string 

// Copy substring characters until you reach ' ' (i.e. "Help") 
for (i=0; str[i] != ' '; i++) { 
    newstr[i] = str[i]; 
} 
newstr[i] = 0;     // Add string terminator at the end of substring 
+0

답변을 게시 해 주셔서 감사합니다. 코드 스 니펫이 질문에 대답 할 수 있지만 설명과 같이 몇 가지 추가 정보를 추가하는 것이 좋습니다. – j0k

+0

동의합니다. 나는 새로운 대답으로 나의 대답을 편집했다. – DrMad

0

구분 기호로 둘 이상의 문자를 사용할 수있는 또 다른 변형입니다.

char str[] = "Help me Please"; 
char newstr[80]; 

char *p = strpbrk(str, " \t\xA0"); /* space, tab or non-breaking space (assuming western encoding, that part would need adaptation to be trule portable) */ 
if(p) 
    strlcpy(newstr, str, p - str + 1); 
else 
    newstr[0] = 0; 

strlcpy 표준하지만 사용하기에 충분히 확산되지 않습니다. 플랫폼에서 사용할 수없는 경우 쉽게 구현할 수 있습니다. strlcpy은 복사 된 마지막 위치에 항상 0을 넣습니다. 따라서 길이 표현식에서 +1이됩니다.