<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem beim öffnen eines Verzeichnisses]]></title><description><![CDATA[<p>ich habe da ein kleines problem.<br />
ich uebergebe einer funktion ein char * also genau das, was eigentlich die funktion opendir haben moechte.<br />
das unguenstige an dieser sache ist nur, dass das nicht funktioniert</p>
<p>ermittelt wird der pfad mit der funktion:</p>
<pre><code class="language-cpp">char* getEntry(){	
	char a,atmp[30];	
	int i = 0,iReturn;
	vector&lt;string&gt; myvec;	

	do{	
		iReturn = 0;
		clearscreen();		
		cout &lt;&lt; &quot;Eingabe:&quot; &lt;&lt; atmp;		
		initscreen();	
		a = getch();						
		endwin();							

		atmp[i] = a;				

		i++;				

	}while(a != RETURN);
	return atmp;	
}
</code></pre>
<p>liest mir das verzeichnis aus:</p>
<pre><code class="language-cpp">vector&lt;string&gt; loadDir(char * dir){
	DIR * pdir;
	struct dirent *pent;
	vector&lt;string&gt; direct;		

	pdir=opendir(dir); //&quot;.&quot; refers to the current dir

	if (!pdir){
		printf (&quot;Fehler beim öffnen des Verzeichinsses&quot;);
		exit(1);
	}
	errno=0;
	while ((pent=readdir(pdir))){		
		direct.push_back(pent-&gt;d_name);		
	}
	if (errno){
		printf (&quot;Fehler beim lesen des Verzeichnisses&quot;);		
		exit(1);
	}
	closedir(pdir);
	return direct;

}
</code></pre>
<p>es wird auch alles wunderbar von der getEntry-funktion zu loadDir-funktion uebergeben...aber das wars auch schon.<br />
wenn ich jetzt aber zb.: eine zuweisung dir = &quot;.&quot; mache, oder welchen gueltigen pfad auch immer funktioniert der ganze spuck wieder.<br />
wuerd mich freuen, wenn jemand mir einen tipp geben koennte was hier falsch laeuft</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126397/problem-beim-öffnen-eines-verzeichnisses</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 05:14:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126397.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Nov 2005 20:18:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Mon, 14 Nov 2005 20:18:01 GMT]]></title><description><![CDATA[<p>ich habe da ein kleines problem.<br />
ich uebergebe einer funktion ein char * also genau das, was eigentlich die funktion opendir haben moechte.<br />
das unguenstige an dieser sache ist nur, dass das nicht funktioniert</p>
<p>ermittelt wird der pfad mit der funktion:</p>
<pre><code class="language-cpp">char* getEntry(){	
	char a,atmp[30];	
	int i = 0,iReturn;
	vector&lt;string&gt; myvec;	

	do{	
		iReturn = 0;
		clearscreen();		
		cout &lt;&lt; &quot;Eingabe:&quot; &lt;&lt; atmp;		
		initscreen();	
		a = getch();						
		endwin();							

		atmp[i] = a;				

		i++;				

	}while(a != RETURN);
	return atmp;	
}
</code></pre>
<p>liest mir das verzeichnis aus:</p>
<pre><code class="language-cpp">vector&lt;string&gt; loadDir(char * dir){
	DIR * pdir;
	struct dirent *pent;
	vector&lt;string&gt; direct;		

	pdir=opendir(dir); //&quot;.&quot; refers to the current dir

	if (!pdir){
		printf (&quot;Fehler beim öffnen des Verzeichinsses&quot;);
		exit(1);
	}
	errno=0;
	while ((pent=readdir(pdir))){		
		direct.push_back(pent-&gt;d_name);		
	}
	if (errno){
		printf (&quot;Fehler beim lesen des Verzeichnisses&quot;);		
		exit(1);
	}
	closedir(pdir);
	return direct;

}
</code></pre>
<p>es wird auch alles wunderbar von der getEntry-funktion zu loadDir-funktion uebergeben...aber das wars auch schon.<br />
wenn ich jetzt aber zb.: eine zuweisung dir = &quot;.&quot; mache, oder welchen gueltigen pfad auch immer funktioniert der ganze spuck wieder.<br />
wuerd mich freuen, wenn jemand mir einen tipp geben koennte was hier falsch laeuft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917800</guid><dc:creator><![CDATA[einer]]></dc:creator><pubDate>Mon, 14 Nov 2005 20:18:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Mon, 14 Nov 2005 20:26:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<blockquote>
<p>char* getEntry(){<br />
char a,atmp[30];<br />
[...]<br />
return atmp;</p>
</blockquote>
<p>Ups! Du gibst eine Referenz auf eine lokale Variable zurück (das sollte dir dein Compiler allerdings eigentlich auch schon mitgeteilt haben).<br />
Nach Verlassen von getEntry löst sich aTmp in Schall und Rauch auf. Jeder nachfolgende Zugriffsversuch ist Leichenfledderei und wird mit undefiniertem Verhalten bestraft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917813</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 14 Nov 2005 20:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Mon, 14 Nov 2005 20:31:22 GMT]]></title><description><![CDATA[<p>mein fehler bei der formatierung ... derzeit hab es beim formatieren fuerden beitrag versehentlich da hineingegeben ...<br />
atmp ist derzeit global definiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917822</guid><dc:creator><![CDATA[einer]]></dc:creator><pubDate>Mon, 14 Nov 2005 20:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Mon, 14 Nov 2005 20:35:03 GMT]]></title><description><![CDATA[<p>Hallo,<br />
poste doch bitte einfach mal eine kompilierbare Minimalversion die dein Problem verdeutlicht. In deinem geposteten Code ist nämlich so einiges fragwürdig (atmp wird ausgegeben obwohl es uninitialisert ist, atmp ist am Ende nicht null-terminiert...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917827</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 14 Nov 2005 20:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Mon, 14 Nov 2005 20:45:08 GMT]]></title><description><![CDATA[<p>das sollte es sein.<br />
das fehler drinnen sind und das einiges nicht passt ist klar, da es ja ein test ist.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;ncurses.h&quot;
#include &lt;vector&gt;
#include &lt;errno.h&gt;
#include &lt;dirent.h&gt;
using namespace std;

int const RETURN = 13;

char atmp[30];
void clearscreen();
void initscreen();
vector&lt;string&gt; loadDir(char* dir);
char* getEntry();

int main(){	

	char * selEntry;
	vector&lt;string&gt; myvec;

	selEntry = getEntry();			

	myvec = loadDir(selEntry);	

	cout &lt;&lt; sizeof(myvec) &lt;&lt; endl;

}

char* getEntry(){	
	char a;	
	int i = 0,iReturn;
	vector&lt;string&gt; myvec;

	do{	
		iReturn = 0;
		clearscreen();		
		cout &lt;&lt; &quot;Eingabe:&quot; &lt;&lt; atmp;		
		initscreen();	
		a = getch();						
		endwin();												

		atmp[i] = a;

		switch(a){
			case BACKSPACE:
				cout &lt;&lt; BACKSPACE &lt;&lt; endl;
				cout.flush();
			break;
			case SPACE:
				cout &lt;&lt; endl &lt;&lt;  &quot;SPACE&quot; &lt;&lt; endl;
			break;

		}			

		i++;				

	}while(a != RETURN);
	return atmp;	
}

vector&lt;string&gt; loadDir(char * dir){
	DIR * pdir;
	struct dirent *pent;
	vector&lt;string&gt; direct;		

	pdir=opendir(dir); //&quot;.&quot; refers to the current dir

	if (!pdir){
		printf (&quot;Fehler beim öffnen des Verzeichinsses&quot;);
		exit(1);
	}
	errno=0;
	while ((pent=readdir(pdir))){		
		direct.push_back(pent-&gt;d_name);		
	}
	if (errno){
		printf (&quot;Fehler beim lesen des Verzeichnisses&quot;);		
		exit(1);
	}
	closedir(pdir);
	return direct;

}

void clearscreen(){
	cout &lt;&lt; &quot;\033[2J\n\n&quot;;
	return;
}

void initscreen(){
	initscr();
	cbreak();
	noecho();
	nonl();
	keypad(stdscr,TRUE);
	return;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/917834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917834</guid><dc:creator><![CDATA[einer]]></dc:creator><pubDate>Mon, 14 Nov 2005 20:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Mon, 14 Nov 2005 21:33:15 GMT]]></title><description><![CDATA[<p>hat sich geklaert das problem...am ende des pfades war ein leerzeichen und das hat mich in teufelskueche gebracht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917923</guid><dc:creator><![CDATA[einer]]></dc:creator><pubDate>Mon, 14 Nov 2005 21:33:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Sat, 26 Nov 2005 15:04:08 GMT]]></title><description><![CDATA[<p>Hätte auch eine kurze Frage zur opendir-Funktion.<br />
Undzwar benutze ich diese unter C++ mit Strings, ich rufe sie derzeit folgendermaßen auf:</p>
<pre><code class="language-cpp">string vname = &quot;irgendwas&quot;;
DIR *dirp;
dirp = opendir(vname.c_str());
</code></pre>
<p>Das heisst, opendir versucht, das Verzeichnis &quot;irgendwas&quot; aufzurufen. So, und hierauf bezieht sich meine Frage:<br />
Wenn ich das aktuelle Verzeichnis öffnen will, muss ich ja nur &quot;.&quot; angeben. Muss ich bei Verzeichnissen innerhalb des aktuellen dann sowas wie &quot;.unterverzeichnis&quot; oder &quot;./unterverzeichnis&quot; angeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927684</guid><dc:creator><![CDATA[TheBrain]]></dc:creator><pubDate>Sat, 26 Nov 2005 15:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Sat, 26 Nov 2005 15:12:33 GMT]]></title><description><![CDATA[<p>TheBrain schrieb:</p>
<blockquote>
<p>Muss ich bei Verzeichnissen innerhalb des aktuellen dann sowas wie &quot;.unterverzeichnis&quot; oder &quot;./unterverzeichnis&quot; angeben?</p>
</blockquote>
<p>&quot;unterverzeichnis&quot; sollte genügen &quot;./unterverzeichnis&quot; kann nicht schaden<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927689</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 26 Nov 2005 15:12:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Sat, 26 Nov 2005 16:36:08 GMT]]></title><description><![CDATA[<p>Ok, danke.<br />
Das Verzeichnis-Öffnen scheint zu klappen. Aber das Auslesen der Dateien darin macht Probleme:<br />
Es liegt nur eine Datei darin, er findet jedoch noch zwei weitere mit den Namen &quot;.&quot; und &quot;..&quot;<br />
Wie kann ich die Suche nun auf diese eine richtige Datei beschränken?</p>
<p>Ich kopiere hier mal ein wenig meines Codes hinen:</p>
<pre><code class="language-cpp">string vname = &quot;irgendwas&quot;;
    DIR *dirp = opendir(vname.c_str())
    struct dirent *dir_entry;    

        while((dir_entry = readdir(dirp)) != NULL)
        {
            cout &lt;&lt; dir_entry-&gt;d_name &lt;&lt; endl; // Schleife scheint 3 Mal durchlaufen zu werden, Ausgaben: &quot;.&quot;, &quot;..&quot;, &quot;datei.cde&quot;
            string open_term = vname + &quot;/&quot; + dir_entry-&gt;d_name;

            ifstream data;
            data.open(open_term,ios::in);
                ...
</code></pre>
<p>Hier meckert der Compiler übrigens auch, dass das erste Argument von open() falsch sei ... schreibe ich den String direkt rein, meckert er nicht oO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927751</guid><dc:creator><![CDATA[TheBrain]]></dc:creator><pubDate>Sat, 26 Nov 2005 16:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Sat, 26 Nov 2005 16:52:25 GMT]]></title><description><![CDATA[<p>diese zwei dateien gibt's in jedem verzeichnis<br />
&quot;.&quot; zeigt auf sich selbst<br />
&quot;..&quot; zeigt aufs übergeordnete Verzeichnis.<br />
Wie wärs damit ?</p>
<pre><code class="language-cpp">string vname = &quot;irgendwas&quot;;
    DIR *dirp = opendir(vname.c_str())
    struct dirent *dir_entry;    

    while((dir_entry = readdir(dirp)) != NULL)        {
       string dirname( dir_entry-&gt;d_name );
       if ( dirname != &quot;.&quot; &amp;&amp; dirname != &quot;..&quot; ) {
          cout &lt;&lt; dirname &lt;&lt; endl; 
          string open_term = vname + &quot;/&quot; + dirname;

          ifstream data;
          data.open(open_term.c_str(),ios::in);
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927772</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 26 Nov 2005 16:52:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Sat, 26 Nov 2005 17:00:25 GMT]]></title><description><![CDATA[<p>Jawohl, mir kam die Erleuchtung kurz nach Verfassens meines letzten Beitrags, sorry. Habs im Prinzip genau so gemacht, wie du es vorschlägst, nur dass ich die If-Bedingung umgedreht hab, d.h.</p>
<pre><code class="language-cpp">if(dir_entry-&gt;d_name == &quot;.&quot; || dir_entry-&gt;d_name == &quot;..&quot; || dir_entry-&gt;d_type != DT_REG)
  continue;
</code></pre>
<p>Und klar, im open-Aufruf habe ich wie immer mal wieder das c_str() vergessen.<br />
VIelen Dank, jetzt klappt es wonderbra! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/927779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927779</guid><dc:creator><![CDATA[TheBrain]]></dc:creator><pubDate>Sat, 26 Nov 2005 17:00:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim öffnen eines Verzeichnisses on Sat, 26 Nov 2005 17:14:41 GMT]]></title><description><![CDATA[<p>TheBrain schrieb:</p>
<blockquote>
<p>Jawohl, mir kam die Erleuchtung kurz nach Verfassens meines letzten Beitrags, sorry. Habs im Prinzip genau so gemacht, wie du es vorschlägst, nur dass ich die If-Bedingung umgedreht hab, d.h.</p>
<pre><code class="language-cpp">if(dir_entry-&gt;d_name == &quot;.&quot; || dir_entry-&gt;d_name == &quot;..&quot; || dir_entry-&gt;d_type != DT_REG)
  continue;
</code></pre>
<p>Und klar, im open-Aufruf habe ich wie immer mal wieder das c_str() vergessen.<br />
VIelen Dank, jetzt klappt es wonderbra! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Und das funktioniert bei dir ?.</p>
<p>Hint: du vergleichst pointer wenn du direkt dir_entry-&gt;d_name vergleichen willst dann hilft strcmp().<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927790</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 26 Nov 2005 17:14:41 GMT</pubDate></item></channel></rss>