<?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[argv]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielleicht kann mir hier jemand helfen. Ich schreibe gerade ein Programm mit DevCpp für die Kommandozeile.</p>
<pre><code>int main(int argc, char *argv[])
{
   for(int i=0; i&lt; argc;i++)
    {
       printf(&quot;arg(%d) = %s\n&quot;,i,argv[i]);
    }
    return EXIT_SUCCESS;
}
</code></pre>
<p>Aufruf: args c:\winnt\system32\*<br />
Wieso listet der mir ALLE Dateien auf? Es sind dann ca. 2000 Argumennte vorhanden!</p>
<p>Ein älteres Programm mach das nicht. Ich habe noch einen weiteren (modernen) Compiler verwendet - selbes Ergebnis.</p>
<p>Danke Euch.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221118/argv</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 12:12:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221118.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Aug 2008 18:05:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to argv on Mon, 25 Aug 2008 18:05:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielleicht kann mir hier jemand helfen. Ich schreibe gerade ein Programm mit DevCpp für die Kommandozeile.</p>
<pre><code>int main(int argc, char *argv[])
{
   for(int i=0; i&lt; argc;i++)
    {
       printf(&quot;arg(%d) = %s\n&quot;,i,argv[i]);
    }
    return EXIT_SUCCESS;
}
</code></pre>
<p>Aufruf: args c:\winnt\system32\*<br />
Wieso listet der mir ALLE Dateien auf? Es sind dann ca. 2000 Argumennte vorhanden!</p>
<p>Ein älteres Programm mach das nicht. Ich habe noch einen weiteren (modernen) Compiler verwendet - selbes Ergebnis.</p>
<p>Danke Euch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571287</guid><dc:creator><![CDATA[thomas69]]></dc:creator><pubDate>Mon, 25 Aug 2008 18:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Mon, 25 Aug 2008 18:10:06 GMT]]></title><description><![CDATA[<p>funktioniert bei mir ganz normal<br />
versuch mal &quot;c:\winnt\system32\*&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571291</guid><dc:creator><![CDATA[hmmm.]]></dc:creator><pubDate>Mon, 25 Aug 2008 18:10:06 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Mon, 25 Aug 2008 18:42:58 GMT]]></title><description><![CDATA[<p>Nein, liegt nicht an der Schreibweise. &quot;system32&quot; war nur ein Beispiel mit vielen Dateien.<br />
Wenn man z.B. &quot;\\tmp\a*&quot; eingibt, dann Verzögert sich der Einsprung bis main() um einige Sekunden (der sucht wohl im Netzwerk).</p>
<p>Da ich das angegebene Verzeichnis selbst durchsuchen will, viel mir dieser &quot;Fehler&quot; erst sehr auf. Erst als ich statt &quot;c:\tmp\a*&quot; immer &quot;c:\tmp\A2008&quot; in den argv fand.<br />
Ich ging zunächst von einer falschen Verwendung von GetFullPathName aus ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571306</guid><dc:creator><![CDATA[thomas69]]></dc:creator><pubDate>Mon, 25 Aug 2008 18:42:58 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Mon, 25 Aug 2008 19:54:01 GMT]]></title><description><![CDATA[<p>Nur so 'ne Idee:</p>
<pre><code>if (argc &gt; 1)...
</code></pre>
<p>und/oder vielleicht</p>
<pre><code>\*
</code></pre>
<p>beim Aufruf weglassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571328</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Mon, 25 Aug 2008 19:54:01 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 06:36:39 GMT]]></title><description><![CDATA[<p>Wie gesagt, das Obere ist ein Beispiel. Das richtige Programm wird auch was machen ...</p>
<p>argv[0] ist das Programm selbst und ich <strong>will</strong> die Argumennte.<br />
Was ich nicht finde ist der Teil, der mir das automatisch Auswertet. Ich habe noch 2 weitere DevCpp probiert, 1x Normal und 1x wxDevCpp - wieder wurde Ausgewertet. Mein altes BCB macht das nicht, den kann ich aber nicht einsetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571478</guid><dc:creator><![CDATA[thomas69]]></dc:creator><pubDate>Tue, 26 Aug 2008 06:36:39 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 07:05:42 GMT]]></title><description><![CDATA[<p>IMHO wertet die Shell (cmd.exe) aus, nicht das Programm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571489</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 26 Aug 2008 07:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 07:26:38 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>IMHO wertet die Shell (cmd.exe) aus, nicht das Programm.</p>
</blockquote>
<p>Kann ich so bestätigen.<br />
Ich habe auch gerade mit diesem Problem gekämpft:<br />
- unter MS-VS6.1/cmd.exe =&gt; arg[1] == &quot;*&quot;<br />
- unter gcc4.4.3/cygwin-bash.exe =&gt; arg[1] == &quot;Datei1&quot;, arg[2] == &quot;Datei2&quot;, ...</p>
<p>War bei mir letztlich aber nicht so ein großes Problem: Ich brauchte sowieso alle Filenamen ...</p>
<p>Mal eine Frage an thomas69: Warum brauchst Du überhaupt unbedingt die &quot;*&quot;-Angabe im Programm ? Wenn Du unbedingt das Verzeichnis selbst auslesen möchtest, wäre es doch naheliegender, das Verzeichnis selbst übergeben zu bekommen (c:\winnt\system32).<br />
... und selbst, wenn Du filtern nmöchtest (z.B. nur die <em>.exe), dann kannst Du die Filterkriterien über weitere Parameter einlesen<br />
arg[1] == &quot;c:\winnt\system32&quot;<br />
arg[2] == &quot;.exe&quot; (und '</em>' und '?' kannst Du durch andere &quot;verbotene&quot; oder seltene Zeichen ersetzen)<br />
OK, das wird mit vollständigen regulären Ausdrücken schon ein wenig lästig, aber gerade das kann eine Konsole so gut, dass man es ihr eigentlich auch ruhigen Gewissens überlassen kann.<br />
Aber vllt. fehlt mir auch nur die Phantasie, um auf einen wirklich problematischen Fallzu kommen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571496</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 26 Aug 2008 07:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 07:42:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>die Shell spielt keine Rolle unter Windows-Systemen:</p>
<p><a href="http://blogs.msdn.com/dancre/archive/2005/05/14/417547.aspx" rel="nofollow">http://blogs.msdn.com/dancre/archive/2005/05/14/417547.aspx</a></p>
<p>Statt dessen ist (auch) die verwendete Entwicklungsumgebung ausschlaggebend, wie z.B. aus der MSDN-Doku ersichtlich hier:</p>
<blockquote>
<p>Microsoft Specific</p>
<p>When running a C program, you can use either of the two wildcards — the question mark (?) and the asterisk (*) — to specify filename and path arguments on the command line.</p>
<p>Command-line arguments are handled by a routine called _setargv (or _wsetargv in the wide-character environment), which by default does not expand wildcards into separate strings in the argv string array. You can replace the normal _setargv routine with a more powerful version of _setargv that does handle wildcards by linking with the Setargv.obj file. If your program uses a wmain function, link with Wsetargv.obj.</p>
<p>To link with Setargv.obj or Wsetargv.obj, use the /link option. For example:</p>
<p>cl typeit.c /link setargv.obj</p>
<p>The wildcards are expanded in the same manner as operating system commands. (See your operating system user's guide if you are unfamiliar with wildcards.) Enclosing an argument in double quotation marks (&quot; &quot;) suppresses the wildcard expansion. Within quoted arguments, you can represent quotation marks literally by preceding the double-quotation-mark character with a backslash (\). If no matches are found for the wildcard argument, the argument is passed literally.</p>
<p>END Microsoft Specific</p>
</blockquote>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571506</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Tue, 26 Aug 2008 07:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 07:51:30 GMT]]></title><description><![CDATA[<p>Probe-Nutzer schrieb:</p>
<blockquote>
<p>...<br />
die Shell spielt keine Rolle unter Windows-Systemen:<br />
...MSDN-Doku...<br />
...</p>
</blockquote>
<p>Naja, ich denke mal, dass in der MSDN-Doku nicht unbedingt die cygwin-shell oder die gcc-runtime beschrieben sein werden - deswegen würde nicht nicht behaupten., die Shell &quot;... spiele keine Rolle unter Windows-Systemen ...&quot;.</p>
<p>Aber gut, dass Du einen Weg gezeigt hast, wie man auch mit den Microsoft-Bausteinen (Shell und Runtime) zum gewünschten Ergebnis kommt.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571509</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 26 Aug 2008 07:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 08:31:12 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>deswegen würde nicht nicht behaupten., die Shell &quot;... spiele keine Rolle unter Windows-Systemen ...&quot;.</p>
</blockquote>
<p>Diese Aussage sollte in direktem Bezug zum verlinkten Artikel stehen, ich wollte nur klar stellen, dass die windows-eigene Shell keine Expansionen durchführt.</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571533</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Tue, 26 Aug 2008 08:31:12 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 09:24:41 GMT]]></title><description><![CDATA[<p>Probe-Nutzer schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>deswegen würde nicht nicht behaupten., die Shell &quot;... spiele keine Rolle unter Windows-Systemen ...&quot;.</p>
</blockquote>
<p>Diese Aussage sollte in direktem Bezug zum verlinkten Artikel stehen, ich wollte nur klar stellen, dass die windows-eigene Shell keine Expansionen durchführt.</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
</blockquote>
<p>Ah - OK.<br />
... sollte auch eher eine Randnotiz von mir sein.</p>
<p>Danke für die Info,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571574</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 26 Aug 2008 09:24:41 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 13:16:43 GMT]]></title><description><![CDATA[<p>Ja, ich könnte die Argumennte aufteilen und zusammenschreiben und ..., so das (wer auch immer) mir die jetzt nicht mehr Aufbereitet. - Woher soll ich aber wissen, dass der sich nicht auch wieder an diesen vergreift?!</p>
<p>Ich will/brauche die Angaben um flexibel zu sein, sonst könnte ich auch fixe Pfade im Programm verwenden.<br />
Habe gerade CodeBlock getestet - der Expandiert auch.<br />
Wo oder wie beendet man diesen Spuk - ich habe keine Ideen mehr.<br />
Die Shell scheint es nicht (direkt) zu sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571702</guid><dc:creator><![CDATA[thomas69]]></dc:creator><pubDate>Tue, 26 Aug 2008 13:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to argv on Tue, 26 Aug 2008 13:48:14 GMT]]></title><description><![CDATA[<p>thomas69 schrieb:</p>
<blockquote>
<p>...<br />
Ich will/brauche die Angaben um flexibel zu sein, sonst könnte ich auch fixe Pfade im Programm verwenden....</p>
</blockquote>
<p>Und dafür brauchst Du das &quot;Sternchen&quot; auch ?</p>
<p>thomas69 schrieb:</p>
<blockquote>
<p>...<br />
Wo oder wie beendet man diesen Spuk - ich habe keine Ideen mehr.<br />
Die Shell scheint es nicht (direkt) zu sein</p>
</blockquote>
<p>Wie schon gesagt: Nur den Pfad (ohne Sternchen) als Parameter.</p>
<p>Übrigens denkst Du da vermutlich ein wenig zu schlecht von der Shell. Ich wette, an bestimmten Stellen möchtest Du durchaus die Mithilfe (wie z.B. beim verfolgen von symbolischen Links).<br />
Merke: Nicht immer ist &quot;selbstgemacht&quot; auch &quot;besser&quot;(flexibel, zuverlässig, ...).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571735</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 26 Aug 2008 13:48:14 GMT</pubDate></item></channel></rss>