2013-02-27 6 views
2

strtok 및 strncat을 모두 사용하여 각 단어에 "ay"문자열을 추가하고 싶습니다. 그러나 내가 찾을 수없는 갈등이있는 것 같았다. 그것은 출력을위한 첫 번째 단어 "Computeray"만을 제공합니다. 도움?strtok 및 strncat 오류

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

int main(void) 
{ 
    char str[] = "Computer science is hard"; 
    char* Token; 
    char* work = "ay"; 
    Token = strtok(str, " "); 

    while (Token != NULL) 
    { 
     strncat(Token, work, 2); 
     printf("%s", Token); 
     Token = strtok(NULL, " "); 
    } 
    return 0; 
} 

답변

3

당신은 (strcat와) 문자열을 수정하고 여전히 제대로 작동하도록 strtok을 기다리고있어 - 그 일을하지 않을 것이다. 대신 strcat를 사용하는 단지 "ay" 별도로 인쇄 :

while (Token != NULL) 
{ 
    printf("%say ", Token); 
    Token = strtok(NULL, " "); 
} 

을 당신이, 당신이 길을 따라 귀하의 의견을 잔뜩 덮어 거라고하고자하는 방법을 작업하는 경우에도 마찬가지입니다. 아마도 당신이 무엇을 하려는지는 모르겠다. 완전히 새로운 문자열을 만들어야 할 필요가 있다면, 입력을 덮어 쓰는 대신에 그것을 새로운 버퍼로 만들어야한다.

+0

답장을 보내 주셔서 감사합니다. 그러나 strncat/strcat을 사용하지 않고 각 단어의 끝에 "ay"를 어떻게 인쇄합니까? –

+0

@ProgrammingNerd Carl은 훌륭한 예제 인'printf ("% say", Token)'을 제공했습니다. – cnicutar

+0

@cnicutar 오, nvm이 처음 잡아 내지 못했습니다. 고마워 –