저는이 문제에 조금 어려움을 겪었습니다. 누군가가 잘못하고있는 것을 발견 할 수 있는지 궁금합니다. stdin에서 사용자 입력을 읽는 중, strtok()을 통해 입력 한 문자열을 분리하여 char * 배열에 저장하는 중입니다. char * 배열은 while 루프 밖에서 정의됩니다.루프가 배열을 삭제하는 동안? (C)
그래서 : 사용자가 stdin을 통해 입력을 입력하고 배열에 명령의 각 단어가있는 문자열이 채워집니다.
사용자가 단순히 입력을 누르는 경우 배열에 유지하려고합니다. 같은 값을 배열에 남기고 싶습니다. 그래서 같은 명령을 다시 실행할 수 있습니다. while 루프가 char * 배열을 지우고있는 것 같습니다. 여기에 코드가 있습니다 :
char *commands[3];
char *result = NULL;
char delims[] = " "; //a space AND a tab!
while (1) {
printf(PROMPT);
//Gathers user input!
char *input;
char stuff[230];
input = fgets(stuff, 230, stdin);
printf("input has length %i\n", strlen(input));
int helper = strlen(input);
int i = 0;
result = strtok(input, delims);
printf("helper has length %i\n", helper);
printf("commands[0] CHECK 1:%s", commands[0]);
if (helper >1)
{
while(result != NULL)
{
printf("while gets hit!\n");
if (i < 4)
{
commands[i] = result;
result = strtok(NULL, delims);
i++;
}
}
}
printf("commands[0] is CHECK 2:%s", commands[0]);
if (strncmp(commands[0], "step", 4) == 0)
{
lc3_step_one(p);
}
printf("commands[0] is CHECK 3:%s", commands[0]);
}
printf의 CHECK 1, CHECK 2 및 CHECK 3은 모두 사용자가 Enter 키를 누르면 아무 것도 인쇄하지 않습니다. 마지막으로 "스텝"을 입력 한 경우, "스텝"을 배열에 유지하고 다시 실행해야합니다.
숙제 .......? –
무엇을 의미합니까? 내가 취하는 수업을위한 프로젝트입니다. 문제 해결을 위해 내가 한 일. 실제로 코드에서이 현상을 멈추려는 시도한 메커니즘이 있습니다 ...하지만 원하는대로 작동하지 않습니다. – Phil