<?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[Datei abhängig vom eingegebenen Dateinamen öffnen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe wieder ein kleines Problem mit dem ich einfach nicht weiterkomme. Ich schreibe momentan ein Programm, dass eine Datei öffnet und deren Inhalt verwendet(das funktioniert schon soweit) nur jetzt möchte ich den User die Möglichkeit geben einen Dateinamen einzugeben z.b. datei2.dat um somit verschiedene Dateien zuverwenden.</p>
<p>Wie ihr unten sehen könnt, funktioniert das schon mit der datei.dat, jedoch eine Eingabe des beliebigen Dateinamen funktioniert leider nicht. Ich habe ein paar Ansätze, aber leider funktioniert keiner. Ich wäre jeden sehr dankbar, der mir ein wenig weiterhelfen könnte.</p>
<pre><code class="language-cpp">void main(void)
{
    const char *dateiName=&quot;datei.dat&quot;;
    FILE *datei;

    /*
    printf(&quot;Welche Datei wollen Sie oeffnen?\n&quot;);
    scanf(&quot;%c&quot;,dateiName);
    */

    if ((datei=fopen(dateiName,&quot;r&quot;))!=NULL)
    {
        funktion(datei);

    }
    else
    {
        printf(&quot;Fehler beim Oeffnen der Datei \&quot;%s\&quot;!\n&quot;,dateiName);
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/140261/datei-abhängig-vom-eingegebenen-dateinamen-öffnen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 15:24:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140261.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Mar 2006 14:59:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 14:59:52 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe wieder ein kleines Problem mit dem ich einfach nicht weiterkomme. Ich schreibe momentan ein Programm, dass eine Datei öffnet und deren Inhalt verwendet(das funktioniert schon soweit) nur jetzt möchte ich den User die Möglichkeit geben einen Dateinamen einzugeben z.b. datei2.dat um somit verschiedene Dateien zuverwenden.</p>
<p>Wie ihr unten sehen könnt, funktioniert das schon mit der datei.dat, jedoch eine Eingabe des beliebigen Dateinamen funktioniert leider nicht. Ich habe ein paar Ansätze, aber leider funktioniert keiner. Ich wäre jeden sehr dankbar, der mir ein wenig weiterhelfen könnte.</p>
<pre><code class="language-cpp">void main(void)
{
    const char *dateiName=&quot;datei.dat&quot;;
    FILE *datei;

    /*
    printf(&quot;Welche Datei wollen Sie oeffnen?\n&quot;);
    scanf(&quot;%c&quot;,dateiName);
    */

    if ((datei=fopen(dateiName,&quot;r&quot;))!=NULL)
    {
        funktion(datei);

    }
    else
    {
        printf(&quot;Fehler beim Oeffnen der Datei \&quot;%s\&quot;!\n&quot;,dateiName);
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1015411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015411</guid><dc:creator><![CDATA[Orangensaft]]></dc:creator><pubDate>Mon, 13 Mar 2006 14:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 15:14:13 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Falsch:</p>
<pre><code class="language-cpp">scanf(&quot;%c&quot;,dateiName);
</code></pre>
<p>besser:</p>
<pre><code class="language-cpp">scanf(&quot;%s&quot;,dateiName);
</code></pre>
<p>ist aber auch nicht ideal, besser wäre eine extra Routine zu schreiben.</p>
<p>Und wenn du den Inhalt auf den dateiName zeigt nachträglich änderst, dann kannst du dateiName nicht als const deklarieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015424</guid><dc:creator><![CDATA[Marcin]]></dc:creator><pubDate>Mon, 13 Mar 2006 15:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 15:19:25 GMT]]></title><description><![CDATA[<p>Hallo Marcin, erstmal danke für deine schnelle Antwort. Das mit dem const war mir schon klar, damit hats ja bereits funktioniert, sprich mit der festgelegten Datei.</p>
<p>wenn ich aber jetzt den Code wie folgt ändere:</p>
<pre><code class="language-cpp">void main(void)
{
    char *dateiName;
    FILE *datei;

    printf(&quot;Welche Datei wollen Sie oeffnen? &quot;);
    scanf(&quot;%s&quot;,dateiName);

    if ((datei=fopen(dateiName,&quot;r&quot;))!=NULL)
    {
        funktion(datei);

    }
    else
    {
        printf(&quot;Fehler beim Oeffnen der Datei \&quot;%s\&quot;!\n&quot;,dateiName);
    }
}
</code></pre>
<p>funktionierts leider auch noch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
<p>Danke für den Hinweis wegen %c &amp; %s, habe ich leider übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015433</guid><dc:creator><![CDATA[Orangensaft]]></dc:creator><pubDate>Mon, 13 Mar 2006 15:19:25 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 15:19:43 GMT]]></title><description><![CDATA[<p>Marcin schrieb:</p>
<blockquote>
<pre><code class="language-cpp">scanf(&quot;%s&quot;,dateiName);
</code></pre>
<p>ist aber auch nicht ideal, besser wäre eine extra Routine zu schreiben.</p>
</blockquote>
<p>&quot;Nicht ideal&quot; ist gut, denn hier wird ein konstanter Zeiger auf einen festen Speicherbereich überschrieben (was - ohnehin schon kritisch durch das &quot;konstant&quot; - früher oder später zwangsläufig zu einem Arrayüberlauf führt).</p>
<p>Besser:</p>
<pre><code class="language-cpp">char dateiName[100];
fgets(dateiName, 100, stdin);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1015437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015437</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 13 Mar 2006 15:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 15:42:31 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a></p>
<blockquote>
<p>&quot;Nicht ideal&quot; ist gut, denn hier wird ein konstanter Zeiger</p>
</blockquote>
<p>Bitte mein vorigen Beitrag genau durchlesen.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11148">@Orangensaft</a><br />
Dieses mal hast du überhaupt keinen Speicher reserviert:</p>
<pre><code class="language-cpp">char *dateiName;
</code></pre>
<p>du hast nur einen Zeiger deklariert, aber keinen Speicher reserviert, besser wäre:</p>
<pre><code class="language-cpp">char dateiName[255];
</code></pre>
<p>Der Vorschlag mit fgets von LordJaxom ist schon um einiges sicherer als scanf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015456</guid><dc:creator><![CDATA[Marcin]]></dc:creator><pubDate>Mon, 13 Mar 2006 15:42:31 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 15:44:14 GMT]]></title><description><![CDATA[<p>Marcin schrieb:</p>
<blockquote>
<blockquote>
<p>&quot;Nicht ideal&quot; ist gut, denn hier wird ein konstanter Zeiger</p>
</blockquote>
<p>Bitte mein vorigen Beitrag genau durchlesen.</p>
</blockquote>
<p>Hab ich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    />, bitte meinen Satz nicht nur halb lesen. Ein Stringliteral gilt laut Standard auch als Konstant wenn man es einem non-const Zeiger zuweist.</p>
<p>Gegen die Variante mit dem Array plus Zuweisung sag ich nix <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="🙂"
    /><br />
EDIT: Huch, die Variante ist plötzlich weg <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015462</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 13 Mar 2006 15:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 15:59:38 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a><br />
Tut mir leid aber aus deinem vorigem Beitrag war schwer zu entnehmen was du meinst.<br />
Das der Standard es so vorschreib wusste ich aber auch nicht.</p>
<blockquote>
<p>Huch</p>
</blockquote>
<p>Orangensaft hat das aus seinem 2. Code auch entfernt, deshalb habe ich ohne initialisirung gelassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015482</guid><dc:creator><![CDATA[Marcin]]></dc:creator><pubDate>Mon, 13 Mar 2006 15:59:38 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 16:23:07 GMT]]></title><description><![CDATA[<p>Also erstmal vielen vielen Dank das ihr mir helft. Finde ich echt super, da ich selbst nicht mehr weiterkomme. Ich sehe schon, hab schon wieder leichtsinnige Fehler gemacht.</p>
<pre><code class="language-cpp">void main(void)
  {
      char dateiName[100];
      fgets(dateiName, 100, stdin);
      FILE *datei;

      if ((datei=fopen(dateiName,&quot;r&quot;))!=NULL)
      {
          funktion(datei);
      }
      else
      {
          printf(&quot;Fehler beim Oeffnen der Datei \&quot;%s\&quot;!\n&quot;,dateiName);
      }
}
</code></pre>
<p>Jetzt kann ich den Dateinamen eingeben, nur leider komme ich jedesmal ins &quot;else&quot; rein, auch wenn ich den richtigen Dateinamen eingebe. Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015498</guid><dc:creator><![CDATA[Orangensaft]]></dc:creator><pubDate>Mon, 13 Mar 2006 16:23:07 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 16:26:54 GMT]]></title><description><![CDATA[<p>Oh, da bist Du auf eine hässliche Falle reingefallen:</p>
<blockquote>
<p>If a newline is read, it is stored into the buffer.</p>
</blockquote>
<p>Vermutlich mag er nicht so gerne eine Datei öffnen die mit \n aufhört. Du musst das Zeilenendezeichen noch entfernen, am einfachsten so:</p>
<pre><code class="language-cpp">if (dateiName[strlen(dateiName) - 1] == '\n') 
  dateiName[strlen(dateiName) - 1] = 0;
</code></pre>
<p>Und diesmal lasse ich mir gerne vorwerfen, dass das nicht ideal ist (aber funktioniert :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015504</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 13 Mar 2006 16:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 16:38:11 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a>:</p>
<p>Wow super danke, es funktioniert. Ich weis nicht, wie ich das wieder gut machen kann. Du hast mir sehr weitergeholfen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<pre><code class="language-cpp">void main(void)
{
    char dateiName[100];

    /* Aufforderung an den Benutzer einen Dateinamen einzugeben z.b. datei.dat */

    printf(&quot;Welche Datei wollen Sie oeffnen? &quot;);

    /* Einlesen des Dateinamens */

    fgets(dateiName, 100, stdin);

    /* Leerzeile um den Abstand zur Ausgabe zu vergrößern */

    printf(&quot;\n&quot;);

    FILE *datei;

    /* Behebung des Fehlers, wenn der Dateiname mit \n aufhört */

    if (dateiName[strlen(dateiName) - 1] == '\n')
	dateiName[strlen(dateiName) - 1] = 0;

    if ((datei=fopen(dateiName,&quot;r&quot;))!=NULL)
    {
        funktion(datei);
    }
    else
    {
	printf(&quot;Fehler beim Oeffnen der Datei \&quot;%s\&quot;!\n&quot;,dateiName);
    }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1015507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015507</guid><dc:creator><![CDATA[Orangensaft]]></dc:creator><pubDate>Mon, 13 Mar 2006 16:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to Datei abhängig vom eingegebenen Dateinamen öffnen on Mon, 13 Mar 2006 16:53:27 GMT]]></title><description><![CDATA[<p>mh ich weiß nicht wie sinnvoll es für deine afgstellung ist, aber du könntest den dateinamen auch über das argument an das programm übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015539</guid><dc:creator><![CDATA[hilfestellung2]]></dc:creator><pubDate>Mon, 13 Mar 2006 16:53:27 GMT</pubDate></item></channel></rss>