⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_20378.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:20378 发表者:robbe 发表日期:2002-11-06 08:05:28
<br>主题:急急急!
<br>内容:有谁知道下列函数怎么用,opendir,candir,readdir,还有stat,然后怎么样实现ls -l的功能啊。我下面有程序,但是其中漏了些代码,还有些是错误的。有谁能帮我看看。<BR>1.Vorgabe.hh<BR>#include &lt;stdlib.h&gt;<BR>#include &lt;stddef.h&gt;<BR>#include &lt;string&gt;<BR><BR>/* 这里还应该有些includes */<BR><BR><BR>using namespace std;<BR><BR><BR>/* Klasse zum Auslesen eines Verzeichnisses */<BR><BR>class Directory {<BR><BR>public:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Directory(const char *name);<BR>&nbsp;&nbsp;&nbsp;&nbsp;~Directory();<BR>&nbsp;&nbsp;&nbsp;&nbsp;operator bool() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;const char* operator()() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Directory& operator++();<BR><BR>private:<BR><BR>&nbsp;&nbsp;/* 这里还需要些什么? */<BR><BR>};<BR><BR><BR>/* Klasse um an Datei-Informationen zu kommen */<BR><BR>class FileStatus {<BR><BR>public:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;FileStatus(const char * name);<BR>&nbsp;&nbsp;&nbsp;&nbsp;~FileStatus();<BR>&nbsp;&nbsp;&nbsp;&nbsp;operator bool() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;string username() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;string groupname() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nlinks() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;string mode() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int size() const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;string date() const;<BR><BR>private:<BR><BR>&nbsp;&nbsp;/* 这里还需要些什么?*/<BR>};<BR><BR>2.vorgabe.cc<BR>#include "vorgabe.hh"<BR>#include &lt;stddef.h&gt;<BR>#include &lt;iostream&gt;<BR>#include &lt;pwd.h&gt;<BR>#include &lt;grp.h&gt;<BR>#include &lt;time.h&gt;<BR><BR>Directory::Directory(const char *name) {}<BR><BR>Directory::~Directory() {}<BR><BR>Directory::operator bool() const {<BR>&nbsp;&nbsp;/* Dummy: es gibt einfach immer 3 Dateien, dies solltet Ihr durch<BR>&nbsp;&nbsp;&nbsp;&nbsp; was sinnvolles ersetzen */<BR>&nbsp;&nbsp;static int number = 3;<BR><BR>&nbsp;&nbsp;if (number--)<BR>&nbsp;&nbsp;&nbsp;&nbsp;return true;<BR>&nbsp;&nbsp;return false;<BR>}<BR><BR>/* gibt den Dateinamen zurueck */<BR>const char* Directory::operator()() const {<BR>&nbsp;&nbsp;return "filename";<BR>}<BR><BR>/* geht einen Eintrag im Verzeichnis weiter */<BR>Directory& Directory::operator++() {<BR>&nbsp;&nbsp;return *this;<BR>}<BR><BR><BR><BR><BR>/* Konstruktur fuer Datei-Informationen */<BR>FileStatus::FileStatus(const char * name) {}<BR><BR>/* Destruktor fuer Datei-Informationen */<BR>FileStatus::~FileStatus() {}<BR><BR><BR>/* Ist es eine gueltige Datei? */<BR>FileStatus::operator bool() const {<BR>&nbsp;&nbsp;return true;<BR>}<BR><BR><BR>/* Alle anderen Funktionen geben Informationen zurueck, die Ihr<BR>&nbsp;&nbsp; mit dem Aufruf von stat bekommen koennt */<BR><BR><BR>string FileStatus::username() const {<BR>&nbsp;&nbsp;return "UNKNOWN";<BR>}<BR><BR>string FileStatus::groupname() const {<BR>&nbsp;&nbsp;return "UNKNOWN";<BR>}<BR><BR>int FileStatus::nlinks() const {<BR>&nbsp;&nbsp;return 1;<BR>}<BR><BR>string FileStatus::mode() const {<BR>&nbsp;&nbsp;return "-rwxrwxrwx";<BR>}<BR><BR>int FileStatus::size() const {<BR>&nbsp;&nbsp;return 0;<BR>}<BR><BR>string FileStatus::date() const {<BR>&nbsp;&nbsp;return "1.1.1980";<BR>}<BR><BR>3.myls.cc<BR>#include "vorgabe.hh"<BR><BR>#include &lt;iostream&gt;<BR>#include &lt;iomanip&gt;<BR><BR><BR>using namespace std;<BR><BR><BR>int main () {<BR>&nbsp;&nbsp;Directory dir("."); /* Oeffnen des aktuellen Verzeichnisses zum Lesen */<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;/* Jedes Verzeichnis hat mindestens 2 Eintraege. Steht von Beginn an<BR>&nbsp;&nbsp;&nbsp;&nbsp; kein Eintrag zum Lesen bereit, so konnte das Verzeichnis nicht<BR>&nbsp;&nbsp;&nbsp;&nbsp; geoeffnet werden (z.B. wegen fehlendem Leserecht). */<BR><BR>&nbsp;&nbsp;if (! dir) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;cerr &lt;&lt; "Unable to read current working directory." &lt;&lt; endl;<BR>&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned int total = 0; /* zum Aufsummieren der Dateigroessen */<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/* Lesen aller Verzeichniseintraege und Versuch, Informationen<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ueber jeden einzelnen Eintrag zu erhalten und auszugeben. */<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;for (; dir; ++dir) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileStatus fs(dir()); /* Kann fehlschlagen (z.B. bei haengenden Links) */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (! fs) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;cerr &lt;&lt; "Can't get information for `" &lt;&lt; dir() &lt;&lt; "'" &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; setw(10) &lt;&lt; fs.mode().c_str();<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; setw(5) &lt;&lt; fs.nlinks();<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; setw(9) &lt;&lt; fs.username().c_str();<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; setw(9) &lt;&lt; fs.groupname().c_str();<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; setw(10) &lt;&lt; fs.size () &lt;&lt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setw(25) &lt;&lt; fs.date().c_str() &lt;&lt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;&nbsp;" &lt;&lt; dir() &lt;&lt; endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;total += fs.size();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "total " &lt;&lt; total &lt;&lt; endl;<BR>&nbsp;&nbsp;}<BR>}<BR><BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐景周 回复日期:2002-11-06 09:43:03
<br>内容:stat可以获取文件各种信息,详细使用可参看下面文章:<BR>http://www.vckbase.com/vckbase/vckbase12/vc/nonctrls/misc_21/1221002.htm
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:robbe 回复日期:2002-11-07 09:45:09
<br>内容:非常感谢徐景周,可是好像你给的那个程序么有完全答复我的问题,我想问的是stat函数和其他几个函数的具体介绍,那个链接只有一点关于stat函数的程序啊。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -