쉘에 대한 내역 기능을 구현 중이며 데이터 구조에서 전화 끊기를하고 있습니다. char 배열에 대한 포인터의 1D 배열을 구현했습니다. 내 문제는 내가 지금 그 chars (C 문자열) 배열을 읽고 최근 명령을 표시하기 위해 화면에 표시하려고합니다. 그러나 가장 최근 명령 만 출력됩니다. 추가하는 동안 메시지를 출력하기 때문에 모든 것이 올바르게 추가되는 것처럼 보입니다. 그러나 검색에서 엉망인 것으로 보입니다.1D 배열의 문자열에서 문자열 가져 오기
char에 대한 포인터 배열에 추가.
/* Size Less than MAX */
if (size < MAX_COMMAND)
{
/* Add Command to History */
history[size++] = inputBuffer;
printf("%s Added", inputBuffer);
}
/* Size Equals Max */
else if (size == MAX_COMMAND)
{
/* Add Command to History */
history[start++] = inputBuffer;
printf("%s\n Added2", inputBuffer);
/* Circulize Array */
start %= MAX_COMMAND;
}
/* Error State */
else
{
/* Throw Error for Unable to Save */
perror("Unable to Save Command to History!");
}
포인터 배열로부터의 읽기.
if (strcmp(inputBuffer, "h") == 0 || strcmp(inputBuffer, "history") == 0)
{
int i = start;
while (i < size)
{
char *commandFromHistory = strdup(history[i]);
printf("%s\n", commandFromHistory); i++;
}
}
그래서 기본적으로 내 쉘을 실행하고 LS를 입력하면, 다음 칼, 다음 시간 나는 시간은, 칼, 시간보다는 다시 LS 와서, 시간, 시간이있을 것이다. 어떤 제안이라도 대단히 감사하겠습니다.
복사/붙여 넣기 오류에 대해 동일한에서 사용하는 같은
단지에서는 StrDup()를 사용의 : 추가와 읽기는 정확히 같은 프로그램입니다. –
수정 됨. 미안해. – malibubts