Tôi chấp nhận đường dẫn thông qua đầu vào dòng lệnh.Mở thư mục bằng cách sử dụng C
Khi tôi làm
dir=opendir(args[1]);
it doesnt enter the loop...i.e dir==null...
Làm thế nào để vượt qua các đầu vào dòng lệnh để trỏ dir ???
void main(int c,char **args)
{
DIR *dir;
struct dirent *dent;
char buffer[50];
strcpy(buffer, args[1]);
dir = opendir(buffer); //this part
if(dir!=NULL)
{
while((dent=readdir(dir))!=NULL)
printf(dent->d_name);
}
close(dir);
}
./a.out /root/TEST is used to run the program..
./a.out --> to execute the program
/root/TEST --> input by the user i.e valid path
Vui lòng cung cấp phần có liên quan của mã của bạn. Câu hỏi của bạn không rõ ràng, ít nhất là với tôi. 'opendir' trả về một' DIR * '. Nó trả về NULL trong 2 tình huống: thư mục không thể được truy cập hoặc bộ nhớ không thể được cấp phát để giữ kết quả. – jweyrich
@Vinod K: Bạn đang thực thi mã này như thế nào/bạn đang sử dụng dòng lệnh nào để chạy? – Thanatos
@Vinod: In args [1] và kiểm tra thủ công xem nó có tồn tại không. 1) Có tồn tại không? 2) Có đường dẫn của bạn phù hợp trong 50 byte (bạn nên sử dụng strncpy)? 3) Điều gì xảy ra nếu bạn không vượt qua paremeter? Thêm điều kiện thích hợp ở đó. – jweyrich