<?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[Nicht vorhandene Zeichen werden eingelesen.]]></title><description><![CDATA[<p>Hallo Zusammen</p>
<p>Ich habe ein Textfile, welches insgesamt 32 Ziffern pro Zeile hat und 24 Zeilen.<br />
Dieses sieht z.B so aus:</p>
<pre><code>00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
</code></pre>
<p>Nun lese ich sie folgendermassen ein:</p>
<pre><code class="language-cpp">int arraymap[32][24];
/* Zeichen für Zeichen einlesen */
int inputChar = 0; 
for(int j=0;j&lt;=23;j++) {
   for(int i=0;i&lt;=31;i++) {
      if(inputChar != EOF || inputChar != '\n' || inputChar != '\0') {
        inputChar = fgetc(datei);
           switch(inputChar) {
	      case '0':
	         arraymap[i][j] = 0;
		 break;
              case '1':
	         arraymap[i][j] = 1;
		 break;
	      case '2':
	         arraymap[i][j] = 2;
		 break;
	      case '3':
	         arraymap[i][j] = 3;
		 break;
              case '4':
	         arraymap[i][j] = 4;
		 break;
	      case '5':
	         arraymap[i][j] = 5;
		 break;
	      case '6':
	         arraymap[i][j] = 6;
		 break;
              case '7':
	         arraymap[i][j] = 7;
		 break;
	      case '8':
	         arraymap[i][j] = 8;
		 break;
	      case '9':
	         arraymap[i][j] = 9;
		 break;
	      default:
	         arraymap[i][j] = inputChar;
		 break;
	   }
        }
        else{inputChar++;}
     }
   }
}
</code></pre>
<p>Eigentlich sollte die default-Anweisung ja nie greifen. Wenn ich mir aber den Inhalt von jedem Array ausgebe habe ich in regelmässigen Abständen die Ziffern 10 und 13 hintereinander und zwar genau nach 32 normalen Ziffern.</p>
<p>Wenn ich nun diese Ziffern als char ausgebe (printf(&quot;%c, %c&quot;,10,13)) bekomme ich folgendes:<br />
&lt;cr&gt;, (Wahrscheinlich ein Leerschlag)</p>
<p>Kann mir jemand sagen, was &lt;cr&gt; bedeutet und wie ich die zwei Zeichen rausfiltere?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120103/nicht-vorhandene-zeichen-werden-eingelesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 05:34:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120103.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Sep 2005 20:12:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nicht vorhandene Zeichen werden eingelesen. on Thu, 08 Sep 2005 20:12:35 GMT]]></title><description><![CDATA[<p>Hallo Zusammen</p>
<p>Ich habe ein Textfile, welches insgesamt 32 Ziffern pro Zeile hat und 24 Zeilen.<br />
Dieses sieht z.B so aus:</p>
<pre><code>00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
</code></pre>
<p>Nun lese ich sie folgendermassen ein:</p>
<pre><code class="language-cpp">int arraymap[32][24];
/* Zeichen für Zeichen einlesen */
int inputChar = 0; 
for(int j=0;j&lt;=23;j++) {
   for(int i=0;i&lt;=31;i++) {
      if(inputChar != EOF || inputChar != '\n' || inputChar != '\0') {
        inputChar = fgetc(datei);
           switch(inputChar) {
	      case '0':
	         arraymap[i][j] = 0;
		 break;
              case '1':
	         arraymap[i][j] = 1;
		 break;
	      case '2':
	         arraymap[i][j] = 2;
		 break;
	      case '3':
	         arraymap[i][j] = 3;
		 break;
              case '4':
	         arraymap[i][j] = 4;
		 break;
	      case '5':
	         arraymap[i][j] = 5;
		 break;
	      case '6':
	         arraymap[i][j] = 6;
		 break;
              case '7':
	         arraymap[i][j] = 7;
		 break;
	      case '8':
	         arraymap[i][j] = 8;
		 break;
	      case '9':
	         arraymap[i][j] = 9;
		 break;
	      default:
	         arraymap[i][j] = inputChar;
		 break;
	   }
        }
        else{inputChar++;}
     }
   }
}
</code></pre>
<p>Eigentlich sollte die default-Anweisung ja nie greifen. Wenn ich mir aber den Inhalt von jedem Array ausgebe habe ich in regelmässigen Abständen die Ziffern 10 und 13 hintereinander und zwar genau nach 32 normalen Ziffern.</p>
<p>Wenn ich nun diese Ziffern als char ausgebe (printf(&quot;%c, %c&quot;,10,13)) bekomme ich folgendes:<br />
&lt;cr&gt;, (Wahrscheinlich ein Leerschlag)</p>
<p>Kann mir jemand sagen, was &lt;cr&gt; bedeutet und wie ich die zwei Zeichen rausfiltere?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/868232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/868232</guid><dc:creator><![CDATA[grub]]></dc:creator><pubDate>Thu, 08 Sep 2005 20:12:35 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht vorhandene Zeichen werden eingelesen. on Thu, 08 Sep 2005 20:18:31 GMT]]></title><description><![CDATA[<p>Die Kombo 10 + 13 repräsentiert unter Windows das NewLine-Zeichen. Irgendwie muss der Editor ja auch erkennen können, dass du in die nächste Zeile gegangen bist.</p>
<p>Filtern kannst du sie ganz einfach: Du baust sie auch ins Switch ein und ignorierst sie:</p>
<pre><code class="language-cpp">case 10:
case 13:
    /* do nothing */
break;
</code></pre>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/868234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/868234</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 08 Sep 2005 20:18:31 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht vorhandene Zeichen werden eingelesen. on Thu, 08 Sep 2005 20:23:14 GMT]]></title><description><![CDATA[<p>das ist das \n und \r zeichen. das musst du auch noch rausfiltern.</p>
<p>//edit side war schneller und besser als ich <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/868236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/868236</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 08 Sep 2005 20:23:14 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht vorhandene Zeichen werden eingelesen. on Thu, 08 Sep 2005 20:33:18 GMT]]></title><description><![CDATA[<p>Hmmm seltsam</p>
<p>Ich habe jetzt folgendes in die switch Anweisung eingefügt:</p>
<pre><code class="language-cpp">/* 10 &amp; 13 sind Steuerzeichen von Windows --&gt; Tue nichts */	  
case 10: 
   break;
case 13:
   break;
</code></pre>
<p>Und jetzt ists ganz lustig:</p>
<p>Ich bekomme verschiedenste Zahlen an den Orten, wo vorher die 10 &amp; 13 standen z.B.</p>
<pre><code>-1209902528
-1208807925
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/868241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/868241</guid><dc:creator><![CDATA[grub]]></dc:creator><pubDate>Thu, 08 Sep 2005 20:33:18 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht vorhandene Zeichen werden eingelesen. on Thu, 08 Sep 2005 20:38:00 GMT]]></title><description><![CDATA[<p>Dein Code ist überhaupt etwas sehr komisch:</p>
<pre><code class="language-cpp">if(inputChar != EOF || inputChar != '\n' || inputChar != '\0') {
        inputChar = fgetc(datei);
</code></pre>
<p>Sollte das nicht umgekehrt da stehen?</p>
<pre><code class="language-cpp">inputChar = fgetc(datei);
if(...) // Nur wenn kein EOF, kein 0 und kein \n
// (BTW: \n wär eins von denen die du gerade im switch aussortiert hast, wie du siehst hat dein if so keinen Sinn)
</code></pre>
<p>Dein switch ist vollkommen überflüssig, '0' bis '9' stehen genau 48 Zeichen nach dem Beginn garantiert hintereinander im Zeichensatz, also reicht sowas auch:</p>
<pre><code class="language-cpp">if(inputChar &gt;= '0' &amp;&amp; inputChar &lt;= '9') // oder isnumber(inputChar)
    arraymap[i][j] = inputChar - '0';
</code></pre>
<p>Und was soll das hier:</p>
<pre><code class="language-cpp">}
        else{inputChar++;}
     }
</code></pre>
<p>Hier kommen höchstwahrscheinlich deine komsichen Zeichen her. Sollte ein Zeichen tatsächlich mal \n, etc. gewesen sein dann wird beim nächsten Mal dieser Schrott ausgeführt. Dann sit die if-Abfrage wieder richtig und inputChar wird benützt. Oder so ähnlich. Auf jeden Fall Unfug.</p>
<p>Wie gesagte meine Version würde so aussehen:</p>
<pre><code class="language-cpp">int arraymap [32][24];

char inputChar = 0;

for(int j = 0; j &lt; 24; ++j)
{
    for(int i = 0; i &lt; 32; ++i)
    {
        inputChar = fgetc(datei);

        if(inputChar &gt;= '0' &amp;&amp; inputChar &lt;= '9')
            arraymap[i][j] = inputChar - '0';
        else
            arraymap[i][j] = 0;
     }
}
</code></pre>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/868247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/868247</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 08 Sep 2005 20:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht vorhandene Zeichen werden eingelesen. on Thu, 08 Sep 2005 20:56:18 GMT]]></title><description><![CDATA[<p>Die seltsamen Zeichen sind zwar wieder aufgetaucht aber mit dem neuen Code wars viel einfacher zu lösen:</p>
<pre><code class="language-cpp">/* Zeichen für Zeichen einlesen */
   char inputChar = 0;
   for(int j = 0; j &lt; 24; ++j) {
      for(int i = 0; i &lt; 32; ++i) {
         /* Zeichen einlesen */
         inputChar = fgetc(datei);
	 /* Überprüfen ob es eine erlaubte Ziffer ist*/
         if(inputChar &gt;= '0' &amp;&amp; inputChar &lt;= '9' &amp;&amp; inputChar != 10 \         
         &amp;&amp; inputChar != 13 &amp;&amp; inputChar != '\n' &amp;&amp; inputChar != '\0') {
	    /* Dem Array den richtigen Wert zuweisen */
            arraymap[i][j] = inputChar - '0';
	 } else {
	    /* Falls inputChar ein nicht erlaubtes Zeichen ist, i zurücksetzen und mehr
	       Glück beim nächsten Versuch haben*/
	    i--;   
         }
      }
   }
</code></pre>
<p>Danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/868266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/868266</guid><dc:creator><![CDATA[grub]]></dc:creator><pubDate>Thu, 08 Sep 2005 20:56:18 GMT</pubDate></item></channel></rss>