한 번에 문자열 (char *
) 문자를 구문 분석하는 함수를 작성하려고하지만 어떤 이유로 세그먼트 오류가 발생합니다. . 사용자 입력을 읽으려고하고 프로그램 이름과 인수를 구문 분석하려고했지만 다소 불미스러운 점이 있습니다.C 문자열 함수 (콘솔을 통한 사용자 입력)를 C 문자열 함수로 구문 분석 - 세그먼트 화 오류
콘솔 :
>./mish
>mish>ls
>command start:ls
>*tempCommand:l
>bottom
>Segmentation fault
코드 :
strcpy(tempCommand, command);
이 strcpy()
로 분할 오류가 어딘가를 작성합니다 원인이라고 :
ParserData parseCommand(ParserData parserData, char* command)
{
char* tempCommand;
char* currToken = '\0';
short firstSpace = 0;
printf("command start:%s \n", command);
strcpy(tempCommand, command);
while(*tempCommand)
{
printf("*tempCommand:%c \n", *tempCommand);
if((char)*tempCommand == ' ' && firstSpace == 0)
{
printf("currToken: %c \n", (char)*currToken);
strcpy(parserData.myChildProgramName,currToken);
printf("after:");
currToken = '\0';
firstSpace = 1;
}
else if((char)*tempCommand != ' ' && *tempCommand != '-')
{
//strcat(currToken, tempCommand);
}
printf("bottom\n");
printf("currToken: %c \n", *currToken);
tempCommand++;
}
printf("out\n");
parserData.myChildProgramArguments = currToken;
return parserData;
}
가능한 복제본 [문자열 복사 (strcpy)] (http://stackoverflow.com/questions/12996604/string-copystrcpy) –