2013-02-23 2 views
0

다음 코드를 작성했지만 메모리에 단어를 할당하면 NULL이됩니다! 다음 코드는 어디에 문제가 있습니까? 그 이유를하시기 바랍니다 도움 :(단어로 라이트를 분할이 쓸 수 밖에포인터를 사용하여 동적 문자 배열을 할당하고 런타임 예외가 발생합니까?

void strSplit(const char *line, char *words[]){ 

    char *word = new char[81]; 
    int index = 0; 
    int s = strlen(line); 
    for(int i = 0; i < s; i++) 
    { 
     if(line[i] != ' ' && line[i] != ',' && line[i] != ';') 
     { 
      if(word == NULL) 
      { 
       strcpy(word, (line[i] + "\0")); 
      } 
      else 
      { 
       strcat(word, (line[i] + "\0")); 
      } 
     } 
     else 
     { 
      if(word != NULL){ 
       strcpy(words[index], word); 
       puts(words[index]); 
       index++; 
       puts(word); 
       word = NULL; 
      } 
     } 

    } 
} 
+1

'라인 [내가] + "\ 0"'하지 않습니다 왜'std :: string'을 사용하지 않습니까? – Mat

+0

line [i]는 문자이고 strcpy는 문자열을 사용해야하므로 문자열에 변환해야합니다. 문자에 NULL을 추가해야합니다. –

+2

'+'on chars 또는'char *'는 문자를 추가하지 않습니다. 숫자 추가 또는 포인터 연산을 수행합니다. – Mat

답변

3
if (word == NULL) { 
    strcpy(word, stuff); 
} 

이다 자살.

+0

또한 동일한 작업을 수행하는 if 문이 두 개있는 이유는 무엇입니까? – AlexLordThorsen

+0

@Rawrgulmuffins 정확하고 왜 'line [i]'를'char *'에 연결 하시겠습니까? 등등.이 코드에서 너무 많이 잘못 되었기 때문에 나는 그것들 모두를 열거 할조차 수 없었다. –

+0

제발, 이유를 설명해 주시겠습니까? –

관련 문제