그래서 strtok() 등의 C 라이브러리 함수를 사용하지 않는 토큰 파서를 구현하려고하는데 액세스 위반과 관련된 몇 가지 문제가 있습니다. 그것은 못 박히지 않았다. 누군가 포인터를 제공 할 의사가 있습니까?C Token Parsing
int main(int argc, char* argv[])
{
int maxTokens = 10;
char* tokens[10];
int i;
for(i = 0; i < maxTokens; i++)
{
tokens[i] = NULL;
}
char* str = "This,is,a,test,string";
int result = parseLine(str, ',', tokens, maxTokens);
printf("%d tokens were found!", result);
system("PAUSE");
return 0;
}
int parseLine(char* str, char delimeter, char* tokens[], int maxTokens)
{
char* srcStr = str;
int strlen = 0;
int tokenCount = 0;
if(srcStr[strlen] != delimeter && srcStr[strlen] != '\0')
{
tokens[tokenCount] = (char*) malloc(sizeof(char)*strlen+1);
tokens[tokenCount] = &srcStr[strlen];
tokenCount++;
}
while(srcStr[strlen] != '\0')
{
if(srcStr[strlen] == delimeter)
{
tokens[tokenCount-1][strlen] = '\0';
if(srcStr[strlen+1] != '\0')
{
tokens[tokenCount] = (char*) malloc(sizeof(char)*strlen+1);
tokens[tokenCount] = &srcStr[++strlen];
tokenCount++;
}
}
else
{
strlen++;
}
}
return tokenCount;
}
변수 이름 "strlen"을 변경하고자 할 수 있습니다. 'string.h' 함수를 사용하지 않더라도 그 이름을 사용하면 코드를 유지하기가 더 어려워집니다. – verbose