dir *opendir( const char *name);
dir *fdopendir( int fd);
注意:這是個庫函式
struct dirent *readdir( dir *dirp);
int readdir_r( dir *dirp, struct dirent *entry, struct dirent **result);
檔案目錄結構體:
struct dirent ;
d_type的值為:dt_blk this is a block device.
dt_chr this is a character device.
dt_dir this is a directory.
dt_fifo this is a named pipe (fifo).
dt_lnk this is a symbolic link.
dt_reg this is a regular file.
dt_sock this is a unix domain socket.
dt_unknown the file type is unknown.
注意:
每次使用readdir後,readdir會讀到下乙個檔案,readdir是依次讀出目錄中的所有檔案,每次只能讀乙個
這個特性和readdir_r()一樣
#include #include #include int main(int argc, char **argv)
pdir = opendir(argv[1]);
if (null == pdir)
while (1)
else
printf("name:[%s] \n", pent->d_name);
cnt++;
} else
};printf("總檔案數為:%d\n", cnt);
return 0;
}
結果:
$ ./a.out .
是普通檔案:name:[a.c]
不是普通檔案:name:[.]
不是普通檔案:name:[..]
是普通檔案:name:[a.out]
不是普通檔案:name:[12_sr]
不是普通檔案:name:[10_sr]
不是普通檔案:name:[17_sr]
不是普通檔案:name:[15_sr]
不是普通檔案:name:[14.sr]
不是普通檔案:name:[18_sr]
不是普通檔案:name:[udp]
不是普通檔案:name:[16_sr]
不是普通檔案:name:[tcp]
總檔案數為:13
注意:這三個引數
#include #include #include #include int main(int argc, char **argv)
pdir = opendir(argv[1]);
if (null == pdir)
ret = readdir_r(pdir , entry , result);
printf("return :%d \n", ret);
printf("name :[%s] \n", entry->d_name);
printf("name :[%s] \n", result[0]->d_name);
ret = readdir_r(pdir , entry , result);
printf("return :%d \n", ret);
printf("name :[%s] \n", entry->d_name);
printf("name :[%s] \n", result[0]->d_name);
return 0;
}
結果: R筆記 R的記憶體管理和垃圾清理
筆記 1 r輸入命令時速度不要太快,終究是個統計軟體,不是程式設計!2 memory.limit 檢視當前作業系統分配記憶體給r的最大限度 單位是m?3 要經常 rm object 或者 rm list ls 和 gc 釋放記憶體空間 4 盡量提前設定矩陣大小固定不變,矩陣每增長一次,即使賦給同名的...
n 和 r的區別
n 是換行,r是回車 在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。於是,研製人員想了個辦法...
r和 n的區別
r return 到當前行的最左邊。n newline 向下移動一行,並不移動左右。linux中 n表示回車 換行 windows中 r n表示回車 換行。mac中 r表示回車 換行。歷史 回車 carriage return 和 換行 line feed 這兩個概念的來歷和區別。在計算機還沒有出現...