을 변화시키고이 루트는 괜찮 어디에서 지금까지 가지고있는 코드가 발견 한,하지만 내가 줄을 추가 할 때 :내 문자 배열
printf(" name: %s\n", readdir(opendir(cur_spot))->d_name);
를이 cur_spot을 변경하고 이상한 문자를 추가합니다 그것을 (파일 이름 :. ~?) 그것이 무엇을 인쇄합니다 .. 어떤 일이 일어나는 이유는 무엇입니까?
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
int main(int argc, char *argv[]) {
struct stat file_stats;
struct stat parent_stats;
struct dirent temp_dir;
char cwd_name[256]; //directory name
char cur_spot[256]; //current directory spot
cur_spot[0] = '.';
stat(cur_spot, &file_stats);
printf("filename: %s\n", cur_spot);
printf(" inode: %ld\n", file_stats.st_ino);
strcat(cur_spot, ".");
stat(cur_spot, &parent_stats);
printf("filename: %s\n", cur_spot);
printf(" inode: %ld\n", parent_stats.st_ino);
while(file_stats.st_ino != parent_stats.st_ino) {
printf("not at root yet\n\n");
stat(cur_spot, &file_stats);
printf(" current child\n");
printf(" inode: %ld\n", file_stats.st_ino);
printf(" name: %s\n", readdir(opendir(cur_spot))->d_name);
strcat(cur_spot, "/..");
stat(cur_spot, &parent_stats);
printf(" current parent\n");
printf(" inode: %ld\n", parent_stats.st_ino);
}
printf("at root\n");
return 0;
}
당신은'문자의 cur_spot [256]를 초기화하지 않습니다
어쨌든, 나는 당신이 원하는 무슨 생각을 할 내 첫 번째 대답에서 코드를 modded하게 , & file_stats);'누가 stat인지 알 수 있습니다. –
좀 더 정확히 말하면'cur_spot [1] = 0;'이 없습니다. –
또는'char cur_spot [256] = ".";로 초기화하십시오. – Barmar