<?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[Frage: Dateioperationen]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe wieder ein kleines Problem.<br />
Habe für die anstehenden Klausur geübt und bin auf folgende Aufgabe gestossen:</p>
<p>Wir sollen ein Programm schreiben, was eine Datei mit beliebigem Namen einliest.<br />
Dann eine Datei mit beliebigem Namen schreibt und den gesamten Text aus Datei1 übernimmt.<br />
Vorher wird der Nutzer aber aufgefordert einen Buchstaben einzugeben.<br />
Dieser Buchstabe wird dann im Inhalt, welcher in Datei2 übertragen wurde gesucht und durch ein '?' ersetzt.</p>
<p>Ich habe das Programm soweit fertig allerdings habe ich ein Problem.<br />
In der Aufgabe steht, dass nur a-z und A-Z als Buchstaben angenommen werden dürfen.<br />
Sollte ein unzulässiger Buchstabe eingegeben werden (z.B. ä,ü,ö,#,2,... also Umlaute Zahlen und Zeichen), soll der Nutzer einfach nochmal aufgefordert werden einen neuen Buchstaben einzugeben, solange, bis ein zulässiger Buchstabe eingegeben wird.</p>
<p>Hier mein Programm:</p>
<pre><code>#include &lt;iostream&gt;
#include&lt;fstream&gt;
using namespace std;

int main (void) {

	ifstream einlesen;
	ofstream schreiben;

	char datei1[200], datei2[200], zeichen, wort;

	cout &lt;&lt; &quot;Einlesen: Dateiname = ? &quot;; cin &gt;&gt; datei1;
	einlesen.open(datei1, ios::in|ios::binary);

	cout &lt;&lt; &quot;Schreiben: Dateiname = ? &quot;; cin &gt;&gt; datei2;
	schreiben.open(datei2, ios::out|ios::binary);

	do{  // ich habe eigentlich hier statt der do-while ein &quot;for (;;){...} stehen gehabt. allerdings bin ich davon ausgegangen, dass ich eine do while machen muss um die Buchstaben auf zulässigkeit zu überprüfen.
	 cout &lt;&lt; &quot;Welcher Buchstabe soll durch '?' ersetzt werden? (a-z, A-Z) &quot;; 
		cin &gt;&gt; wort;
		zeichen=(char)einlesen.get();
		if(!einlesen.eof()) {
			if (zeichen == wort) 
				schreiben.put('?');
			else
				schreiben.put(zeichen);
		}
	else
		break;
	}
	while (********************);  // Ich habe keinen Schimmer was hier rein muss um die Buchstaben-eingabe auf Richtigkeit zu kontrollieren...

	cout &lt;&lt; &quot;\n\n&quot;;
	einlesen.close();
	schreiben.close();
	return 0;

}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen. Die Klausur ist am Dienstag und ich würde sehr gerne wissen, wie das Programm mit der letzten &quot;Kleinigkeit&quot; läuft.</p>
<p>Danke schonmal <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/topic/323507/frage-dateioperationen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 22:21:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323507.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Feb 2014 15:33:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage: Dateioperationen on Sun, 02 Feb 2014 15:33:18 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe wieder ein kleines Problem.<br />
Habe für die anstehenden Klausur geübt und bin auf folgende Aufgabe gestossen:</p>
<p>Wir sollen ein Programm schreiben, was eine Datei mit beliebigem Namen einliest.<br />
Dann eine Datei mit beliebigem Namen schreibt und den gesamten Text aus Datei1 übernimmt.<br />
Vorher wird der Nutzer aber aufgefordert einen Buchstaben einzugeben.<br />
Dieser Buchstabe wird dann im Inhalt, welcher in Datei2 übertragen wurde gesucht und durch ein '?' ersetzt.</p>
<p>Ich habe das Programm soweit fertig allerdings habe ich ein Problem.<br />
In der Aufgabe steht, dass nur a-z und A-Z als Buchstaben angenommen werden dürfen.<br />
Sollte ein unzulässiger Buchstabe eingegeben werden (z.B. ä,ü,ö,#,2,... also Umlaute Zahlen und Zeichen), soll der Nutzer einfach nochmal aufgefordert werden einen neuen Buchstaben einzugeben, solange, bis ein zulässiger Buchstabe eingegeben wird.</p>
<p>Hier mein Programm:</p>
<pre><code>#include &lt;iostream&gt;
#include&lt;fstream&gt;
using namespace std;

int main (void) {

	ifstream einlesen;
	ofstream schreiben;

	char datei1[200], datei2[200], zeichen, wort;

	cout &lt;&lt; &quot;Einlesen: Dateiname = ? &quot;; cin &gt;&gt; datei1;
	einlesen.open(datei1, ios::in|ios::binary);

	cout &lt;&lt; &quot;Schreiben: Dateiname = ? &quot;; cin &gt;&gt; datei2;
	schreiben.open(datei2, ios::out|ios::binary);

	do{  // ich habe eigentlich hier statt der do-while ein &quot;for (;;){...} stehen gehabt. allerdings bin ich davon ausgegangen, dass ich eine do while machen muss um die Buchstaben auf zulässigkeit zu überprüfen.
	 cout &lt;&lt; &quot;Welcher Buchstabe soll durch '?' ersetzt werden? (a-z, A-Z) &quot;; 
		cin &gt;&gt; wort;
		zeichen=(char)einlesen.get();
		if(!einlesen.eof()) {
			if (zeichen == wort) 
				schreiben.put('?');
			else
				schreiben.put(zeichen);
		}
	else
		break;
	}
	while (********************);  // Ich habe keinen Schimmer was hier rein muss um die Buchstaben-eingabe auf Richtigkeit zu kontrollieren...

	cout &lt;&lt; &quot;\n\n&quot;;
	einlesen.close();
	schreiben.close();
	return 0;

}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen. Die Klausur ist am Dienstag und ich würde sehr gerne wissen, wie das Programm mit der letzten &quot;Kleinigkeit&quot; läuft.</p>
<p>Danke schonmal <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/2381139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381139</guid><dc:creator><![CDATA[piro411]]></dc:creator><pubDate>Sun, 02 Feb 2014 15:33:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage: Dateioperationen on Sun, 02 Feb 2014 16:42:44 GMT]]></title><description><![CDATA[<p>Du willst also bei <strong>jedem einzelnen</strong> zu kopierenden Zeichen den Benutzer nach einem Ersatz fragen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381150</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 02 Feb 2014 16:42:44 GMT</pubDate></item><item><title><![CDATA[Reply to Frage: Dateioperationen on Sun, 02 Feb 2014 21:55:39 GMT]]></title><description><![CDATA[<p>Nein. Ich werde einmal gefragt um einen Buchstaben. Zum Beispiel gebe ich dann 'e' ein. Das programm geht dann jedes Zeichen in der textdatei durch und guckt ob es sich um ein 'e' handelt. Wenn ja ersetzt es dieses Zeichen durch ein '?'. Gebe ich jedoch statt einem normalen Buchstaben Beispielsweise einen Umlaut oder ein Zeichen ein, so gilt dieses als unzulässig und ich werde nochmal gefragt um ein neues Zeichen einzugeben. Das solange bis ich ein zulässigen Buchstaben eingegeben habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381205</guid><dc:creator><![CDATA[piro411]]></dc:creator><pubDate>Sun, 02 Feb 2014 21:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Frage: Dateioperationen on Mon, 03 Feb 2014 09:25:10 GMT]]></title><description><![CDATA[<p>Das was du beschreibst, entspricht aber <strong>nicht</strong> dem gezeigten Source-Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381262</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 03 Feb 2014 09:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage: Dateioperationen on Mon, 03 Feb 2014 10:14:57 GMT]]></title><description><![CDATA[<p>Zum Testen auf Buchstaben kannst du <a href="http://www.cplusplus.com/reference/cctype/isalpha/" rel="nofollow">isalpha</a> nehmen. (wenn du nicht an locale rumgespielt hast)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381271</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Mon, 03 Feb 2014 10:14:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage: Dateioperationen on Mon, 03 Feb 2014 11:54:35 GMT]]></title><description><![CDATA[<p>Also Leute,<br />
ich verstehe eure Bemühungen mir Alternativen vorzuschlagen. Darum geht es mir aber nicht. wir sollten das Programm mit den bisher gelernten Befehlen etc. auf die Beine stellen.<br />
Bisher hatte ich diesen Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
using namespace std;

int main (void) {

	ifstream einlesen;
	ofstream schreiben;

	char datei1[100], datei2[100], zeichen, wort;

	cout &lt;&lt; &quot;Einlesen: Dateiname = ? &quot; ; cin &gt;&gt; datei1;
	einlesen.open(datei1, ios::in|ios::binary);

	cout &lt;&lt; &quot;Schreiben: Dateiname = ? &quot;; cin &gt;&gt; datei2;
	schreiben.open(datei2, ios::out|ios::binary);

	cout &lt;&lt; &quot;Welcher Buchstabe soll durch '?' ersetzt werden?  &quot;; 
	cin&gt;&gt;wort;

	for(;;) {

		zeichen=(char)einlesen.get();
		if (!einlesen.eof()){
			if ( zeichen == wort)
				schreiben.put('?');
			else
				schreiben.put(zeichen);
		}
		else 
			break;
		}

	cout &lt;&lt; &quot;\n\n&quot;;
	einlesen.close();
	schreiben.close();

	return 0;
}
</code></pre>
<p>So lief es auch einwandfrei bis auf den Punkt, dass wenn die Aufforderung kommt: &quot;Welcher Buchstabe soll durch '?' ersetzt werden? &quot;, wenn ich da zum Beispiel ein &quot;ü&quot; oder ein &quot;#&quot; eingebe, der dann die txt datei auf diese Zeichen durchsucht und gegebenenfalls dann durch ein &quot;?&quot; ersetzt.<br />
Das soll er aber nicht.<br />
Er soll das nur für die Zugelassenen Zeichen (Groß-Kleinbuchstaben von a-z) durchführen.<br />
Kommt ein unzulässiges Zeichen auf, so soll er einfach die Aufforderung &quot;Welcher Buchstabe soll durch....&quot; wieder ausgeben, sodass ich ein neues zeichen eingebe.<br />
Dies wiederholt sich so lange, bis ich wieder ein zulässiges zeichen eingegeben habe.</p>
<p>Nun ist es so, dass der Code den ich in diesem Beitrag gepostet habe mit einer For Schleife ohne Argumenten läuft. Das ist denke ich nicht der richtige weg zu meinem Problem.<br />
Ich gehe mal davon aus, dass die Eingabe Aufforderung zu erst mit in die Schleife muss und das ganze dann durch eine do-while Schleife umschlossen wird.<br />
Nun mein Problem: Was kommt dann in die While Bedingung, um meine Eingaben auf Richtigkeit zu kontrollieren??</p>
<p>ich brauche die Lösung oder einen Ansatz sehr dringend, da die Klausur schon morgen ist und diese Aufgabe Klausurrelevant ist.</p>
<p>Ich hoffe ihr könnt mir helfen.</p>
<p>Danke im Voraus nochmal<br />
<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="🙂"
    /> <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/2381295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381295</guid><dc:creator><![CDATA[piro411]]></dc:creator><pubDate>Mon, 03 Feb 2014 11:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage: Dateioperationen on Mon, 03 Feb 2014 15:28:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>so wie ich die Aufgabe verstehe, geht es darum, daß du bei der Benutzereingabe des zu ersetzenden Zeichen (bei dir die Variable 'wort'!?) überprüfen sollst, daß hier nur Buchstaben eingegeben werden sollen (d.h. hier mußt du eine Schleife herum basteln).<br />
Also ganz klar Trennung zweier Aufgaben: zuerst Eingabe(n) validieren, dann die Berechnung durchführen!</p>
<p>Also noch mal klargestellt:<br />
nicht zwei ineinander verschachtelte Schleifen, sondern zwei Schleifen nacheinander!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381334</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 03 Feb 2014 15:28:41 GMT</pubDate></item></channel></rss>