뭔가 바보 같은 짓을하고있다. 나는 오랫동안 프로그래밍을 해본 적이 없으며이 코드를 작성하는 동안 조금 녹슬 었습니다. 나는 곧 코딩 선으로 돌아갈 것이라고 확신한다. 내가 할,왜이 정수는 그 자체로 감소합니까?
/*
* Created on February 17, 2011, 1:25 AM
*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
typedef struct dir_instance
{
char path[PATH_MAX];
char *history[PATH_MAX/2];
int history_size;
int history_position;
};
struct dir_instance *dir_new_instance(char *path)
{
struct dir_instance inst;
inst.history_position=0;
inst.history_size=0;
inst.history[0]=malloc(strlen(path));
strcpy(inst.history[0], path);
return &inst;
}
void dir_add_history(struct dir_instance *inst, char *dir)
{
inst->history[inst->history_position+1]=malloc(strlen(dir)+1);
strcpy(inst->history[inst->history_position+1], dir);
}
void dir_goto(struct dir_instance *inst, char *dir)
{
dir_add_history(inst, dir);
inst->history_position++;
inst->history_size++;
}
void dir_go_back(struct dir_instance *inst)
{
if(inst->history_position>0)inst->history_position--;
}
void dir_go_forward(struct dir_instance *inst)
{
if(inst->history[inst->history_position+1]!=NULL)inst->history_position++;
}
int main(int argc, char **argv) {
struct dir_instance *tab1=dir_new_instance("/");
dir_goto(tab1, "/home");
printf("the current directory is: %s\n",tab1->history[tab1->history_position]);
printf("the previous directory is: %s\n",tab1->history[tab1->history_position]);
return (EXIT_SUCCESS);
}
내가 여기에있는 것입니다 재미 어떤 사업 모르겠지만, 같은 나는 말했다 : 한편
, 나는이 코드 (특히tab1->history_position
정수)에 문제가있어 어리석은 실수를 의심해라. 무슨 일이 일어나는 것입니까? 정수
tab1->history_position
은 65 행에서 1에서 0으로 감소합니다. 이유는 알 수 없습니다. 저에게 알려주십시오.
어떤 줄이 65입니까? – Tim
미안하지만'printf ("현재 디렉토리는 % s \ n", tab1-> history [tab1-> history_position]);'함수'main'에서부터입니다. – Hassan
'printf' 두 곳에서 같은 위치를 출력하고 있습니다. – ruslik