다음 코드를 작성했지만 메모리에 단어를 할당하면 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;
}
}
}
}
'라인 [내가] + "\ 0"'하지 않습니다 왜'std :: string'을 사용하지 않습니까? – Mat
line [i]는 문자이고 strcpy는 문자열을 사용해야하므로 문자열에 변환해야합니다. 문자에 NULL을 추가해야합니다. –
'+'on chars 또는'char *'는 문자를 추가하지 않습니다. 숫자 추가 또는 포인터 연산을 수행합니다. – Mat