C에서 strtok을 사용하는 데 문제가 있습니다. fgets를 사용하여 명령 줄에서 사용자 입력을 얻었으므로 파이프 ("|")를 delimeter로 토큰 화하고 결과를 a 이중 포인터 변수. 그것은 잘 C 언어에서 strtok 사용
while(*argv!= NULL)
{
if((strcmp(*argv, "|") == 0){
count = count + 1;
}
argv++;
}
printf("%d pipes", count);
을 토큰 화 된 것 그러나 그것이 작동하지 않는 경우
char** argv;
char *token;
token = strtok(userInput, "|");
while(token != NULL){
*(argv++) = token;
token = strtok(NULL, "|");
}
*argv = '\0';
내가 다음 확인하려면이 코드를 사용 : 여기에 내 코드입니다. char ** argv는 아무것도 포함하지 않습니다. 코드 실행이 중지되고 -1이 반환됩니다. argv를 인쇄하려고하면 argv에 값이 없습니다.
어떤 아이디어로주세요? 감사.
편집 :
내가 뭘 원하는 strtok를 사용 후이
userInput = "abc|cde";
입니다. 나는
**argv = "abc";
는하지만 그것은 작동하지 않습니다 * * 무엇 정확히 발생합니다.? – Dennis
작동하지 않는다고 말할 때 어떤 오류가 발생합니까? –
"작동하지 않는다"는 것은 무엇을 의미합니까? 코드는 당신이 말한 것과 정확하게 일치합니다. 그것은 예상 한 것과 다를 수 있습니다. 그러나 우리에게 말할 의향이 없다고 추측하는 것은 불가능합니다. –