據我所知,seekdir
必須設置當前流的位置。但是,如果我設置了它,它會在下一個readdir
之後爲任何位置參數返回相同的d_name
。我只是想爲手動輸入位置讀取目錄名,並且不希望在它無法設置流的位置與seekdir()
#include <iostream>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
using namespace std;
int main(int argc, char* argv[])
{
if(argc > 1)
{
DIR* directory = opendir(argv[1]);
if (directory == NULL)
{
cout << "Enter valid directory name" << endl;
return -1;
}
long position = 0;
cout << "Enter position of directory stream: ";
cin >> position;
seekdir(directory, position);
dirent *dir = readdir(directory);
cout << dir->d_name <<":"<< strlen(dir->d_name) << endl;
closedir(directory);
return 0;
}
else
{
return -1;
}
}
從手冊頁:*「loc參數應該是之前調用telldir(3)返回的值。」*看起來您並不像從telldir()獲得參數。 – cdhowie 2013-05-01 20:47:21
'telldir()'返回0.那麼如何設置流的位置? – vmeln 2013-05-01 20:49:36
通常你使用'seekdir()'返回到你之前的一個點,使用'telldir()'記錄的值。 – cdhowie 2013-05-01 20:51:49