0
"ls -l \ | sort"와 같이 gets()
(셸에 입력 된 명령)의 결과로 char 배열이 있습니다. 이제 내가 갖고 싶은 것은 특정 명령에 대한 포인터를 보유 할 char ***입니다 (따라서 |로 분리됩니다). 내 예 :char 배열을 *** char으로 구문 분석
*1[] = {"ls", "-l", "\", null}
*2[] = {"sort", null}
내 char ***는 {1,2}
입니다. 문제는이 문자 배열에서 얼마나 많은 문자열이 나에게 주어질 지 모르기 때문에 미리 정의 할 수는 없다는 것입니다. 이제는 숯의 배열을 공백으로 단어로 분할하는 것만으로도 실제로 필요한 것을 어떻게 처리하는지 알 수 없습니다.
int parse(char *line, char **argv)
{
while (*line != '\0') {
while (*line == ' ' || *line == '\t' || *line == '\n')
*line++ = '\0';
*argv++ = line;
while (*line != '\0' && *line != ' ' && *line != '\t' && *line != '\n'){
line++;
}
}
*argv = '\0';
return 0;
}
. stdin에서 어떻게 읽습니까? –
gets()를 char 라인 [1024]에 넣고이 라인 변수를 parse (char * line, char ** argv)로 전달합니다. 여기서 argv는 비어있어이 함수로 채울 준비가되었습니다. – user3885166
문자열을 단어 배열로 분할하고 싶습니까? –