<?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[Typ überprüfung, für mich unbekannter fehler [gelöst]]]></title><description><![CDATA[<p>//---------Ich arbeite unter windows Vista mit MS Visual c++ 2008 express-------//</p>
<p>Mein Projekt besteht zurzeit aus 3 Dateien:<br />
<strong>Main.cpp</strong></p>
<p>Diese beiden werden in der Main.cpp nach den Bibliotheken eingebunden.!!<br />
<strong>Funktionen.h</strong><br />
<strong>Klassen.h</strong></p>
<p>Also ich versuche die Eingabe auf Typ zu überprüfen (Zahl oder String), dass alles zentral in einer Funktion, der ich die Variable übergebe in der der neue wert eingeben werden soll.</p>
<p>Leider meldete er mir fehler wie</p>
<blockquote>
<p>error C2664: 'EINGABEB': Konvertierung des Parameters 1 von 'char (*)[50]' in 'char *' nicht möglich</p>
</blockquote>
<p>was mache ich hier falsch? Es sei nur gesagt ich bin amateur was c/c++ angeht.</p>
<p>( Steht in der Klassen.h )Defenition der Struktur: Person</p>
<pre><code class="language-cpp">struct Person
{
	char Vorname[50];
};
</code></pre>
<p>( Steht in der Main.cpp ) Erstellen des Objektes: freund</p>
<pre><code class="language-cpp">Person freund[10];
</code></pre>
<p>(Steht in der Funktionen.h ) Aufruf:</p>
<pre><code class="language-cpp">EINGABEB(&amp;freund[(i)].Vorname);
</code></pre>
<p>( steht in der Funktionen.h ) Und hier die angesprochene Funktion, welcher ersteinmal nur auf den Typ String untersucht!!</p>
<pre><code class="language-cpp">void EINGABEB(char *eingabe)
{
	//-----Variblen---------//
	int beenden = 0;
	int result = 0;

	//-----Main-------------//
	do
	{
		if(result == 1)
		{
			beenden = 1;
		}
		else
		{
			result = scanf(&quot;%s&quot;,*eingabe);
		}
		if(result==0)
		{
			system(&quot;cls&quot;);
			cout &lt;&lt;&quot;Sie haben keine Zeichenfolge eingegeben, versuchen sie es bitte erneut&quot;;
			getchar();
		}
	} while (beenden == 0);
}
</code></pre>
<p>Um es vll deutlicher zu machen: Ich möchte das nachher in &quot;freund[i].Vorname&quot;, der eingegebene Text drinne steht, welcher vorher mit scanf auf typ überprüft wurde.</p>
<p>Dazu habe ich wie gesagt die Funktion EINGABEB definiert, welche auch bei späteren eingaben überprüfen soll ob der eingegebene Wert eine Zahl oder ein String ist.<br />
Nach dem die überprüfung und die übergabe der Eingabe an den Zeiger bzw die Variable stattgefunden hat will ich mit der Varaiablen weiterarbeiten können.</p>
<p>Vll so verständlicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245573/typ-überprüfung-für-mich-unbekannter-fehler-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 18:28:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245573.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Jul 2009 19:40:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 23:05:55 GMT]]></title><description><![CDATA[<p>//---------Ich arbeite unter windows Vista mit MS Visual c++ 2008 express-------//</p>
<p>Mein Projekt besteht zurzeit aus 3 Dateien:<br />
<strong>Main.cpp</strong></p>
<p>Diese beiden werden in der Main.cpp nach den Bibliotheken eingebunden.!!<br />
<strong>Funktionen.h</strong><br />
<strong>Klassen.h</strong></p>
<p>Also ich versuche die Eingabe auf Typ zu überprüfen (Zahl oder String), dass alles zentral in einer Funktion, der ich die Variable übergebe in der der neue wert eingeben werden soll.</p>
<p>Leider meldete er mir fehler wie</p>
<blockquote>
<p>error C2664: 'EINGABEB': Konvertierung des Parameters 1 von 'char (*)[50]' in 'char *' nicht möglich</p>
</blockquote>
<p>was mache ich hier falsch? Es sei nur gesagt ich bin amateur was c/c++ angeht.</p>
<p>( Steht in der Klassen.h )Defenition der Struktur: Person</p>
<pre><code class="language-cpp">struct Person
{
	char Vorname[50];
};
</code></pre>
<p>( Steht in der Main.cpp ) Erstellen des Objektes: freund</p>
<pre><code class="language-cpp">Person freund[10];
</code></pre>
<p>(Steht in der Funktionen.h ) Aufruf:</p>
<pre><code class="language-cpp">EINGABEB(&amp;freund[(i)].Vorname);
</code></pre>
<p>( steht in der Funktionen.h ) Und hier die angesprochene Funktion, welcher ersteinmal nur auf den Typ String untersucht!!</p>
<pre><code class="language-cpp">void EINGABEB(char *eingabe)
{
	//-----Variblen---------//
	int beenden = 0;
	int result = 0;

	//-----Main-------------//
	do
	{
		if(result == 1)
		{
			beenden = 1;
		}
		else
		{
			result = scanf(&quot;%s&quot;,*eingabe);
		}
		if(result==0)
		{
			system(&quot;cls&quot;);
			cout &lt;&lt;&quot;Sie haben keine Zeichenfolge eingegeben, versuchen sie es bitte erneut&quot;;
			getchar();
		}
	} while (beenden == 0);
}
</code></pre>
<p>Um es vll deutlicher zu machen: Ich möchte das nachher in &quot;freund[i].Vorname&quot;, der eingegebene Text drinne steht, welcher vorher mit scanf auf typ überprüft wurde.</p>
<p>Dazu habe ich wie gesagt die Funktion EINGABEB definiert, welche auch bei späteren eingaben überprüfen soll ob der eingegebene Wert eine Zahl oder ein String ist.<br />
Nach dem die überprüfung und die übergabe der Eingabe an den Zeiger bzw die Variable stattgefunden hat will ich mit der Varaiablen weiterarbeiten können.</p>
<p>Vll so verständlicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743766</guid><dc:creator><![CDATA[Sheepstyle]]></dc:creator><pubDate>Wed, 15 Jul 2009 23:05:55 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 20:02:29 GMT]]></title><description><![CDATA[<p>Beim Einlesen mit scanf bekommst du Probleme, denn<br />
du bekommst ne Zeichenkette nicht ohne weiteres in einen nicht allokierten char Zeiger rein.</p>
<p>So gehts:</p>
<pre><code class="language-cpp">char buf[81] = {0};
	//****************** Version 1 mit malloc **********************
	char* cs = (char*) malloc ( 81 * sizeof(char)); // Speicher reservieren.
	if ( cs == NULL )
		return 1;
	printf(&quot;Zeichenkette eingeben(Version 1): &quot;);
	scanf(&quot;%80s&quot;, cs); // Maximal 80 Zeichen einlesen, schützt vor Pufferüberlauf.
	puts(cs);
	free (cs); // Speicher freigeben.
	//****************** Version 2 ohne malloc **********************
	printf(&quot;Zeichenkette eingeben(Version 2): &quot;);
	scanf(&quot;%80s&quot;, buf);
	puts(buf);
				// Speicher freigeben entfällt.
</code></pre>
<p>Ungünstig:</p>
<pre><code class="language-cpp">void EINGABEB(char *eingabe)
</code></pre>
<p>So geht es nur, wenn die Struktur global ist.<br />
Übergib statt dessen lieber einen Zeiger auf <em>struct Person</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743780</guid><dc:creator><![CDATA[puff0r]]></dc:creator><pubDate>Wed, 15 Jul 2009 20:02:29 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 20:18:18 GMT]]></title><description><![CDATA[<p>Wenn ich jetzt aber einen Zeiger auf &quot;Struct Person&quot; übergebe, dann kann ich doch nur mit den eigenschaften<br />
von freund eingaben tätigen, ich möchte aber egal wo, in meinem code eine überprüfung der Eingabe auf Zahl<br />
oder String haben. D.h anstatt ein einfaches cin &gt;&gt; auf zu rufen möchte ich immer die funktion EINGABE aufrufen !!!!!.</p>
<p>Oder habe ich da was falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743787</guid><dc:creator><![CDATA[Sheepstyle]]></dc:creator><pubDate>Wed, 15 Jul 2009 20:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 21:39:46 GMT]]></title><description><![CDATA[<p>Lass mal hier den Dereferenzierungsoperator (*) weg</p>
<pre><code class="language-cpp">result = scanf(&quot;%s&quot;,*eingabe);
</code></pre>
<p>und beim Aufruf der Funktion den Adressoperator (&amp;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743820</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Wed, 15 Jul 2009 21:39:46 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 21:45:08 GMT]]></title><description><![CDATA[<p>Danke WX++ so funktioniert es erstmal, kannst du mir sagen wass ich da dann eigentlich gemacht habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743821</guid><dc:creator><![CDATA[Sheepstyle]]></dc:creator><pubDate>Wed, 15 Jul 2009 21:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 22:58:48 GMT]]></title><description><![CDATA[<p>Da der Name eines Arrays syntaktisch wie ein Zeiger auf das erste Element behandelt wird, erwartet scanf() auch genau diesen. Wenn du den Zeiger dereferenzierst, übergibst du lediglich den Wert des ersten Zeichens.</p>
<p>Aus eben diesem Grund ist der Adressoperator beim Aufruf der Funktion auch überflüssig und falsch, da &quot;Vorname&quot; bereits eine Adresse ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743847</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Wed, 15 Jul 2009 22:58:48 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 23:07:31 GMT]]></title><description><![CDATA[<p>Also zum abschluss sage ich hier nochmals danke an WX++, aber auch an puffor, der sich des problems angenommen hat, was ich für mich aber nicht verwerten konnte</p>
<p>mfg Christopher Freytag</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743851</guid><dc:creator><![CDATA[Sheepstyle]]></dc:creator><pubDate>Wed, 15 Jul 2009 23:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 23:11:20 GMT]]></title><description><![CDATA[<p>Sheepstyle schrieb:</p>
<blockquote>
<p>... ich möchte aber egal wo, in meinem code eine überprüfung der Eingabe auf Zahl<br />
oder String haben. D.h anstatt ein einfaches cin &gt;&gt; auf zu rufen möchte ich immer die funktion EINGABE aufrufen !!!!!.<br />
Oder habe ich da was falsch verstanden?</p>
</blockquote>
<blockquote>
<p>result = scanf(&quot;%s&quot;, ...</p>
</blockquote>
<p>Ok, aber in deinem Fall wird für <em>result</em> immer ne 1 rauskommen, weil eine Zeichenkette ja auch aus Zahlen bestehen kann. Soll also keine Zahl im Namen vorkommen, musst du jedes einzelne Zeichen auf Zahl prüfen.<br />
Außerdem sollte eine Überschreitung der Arraygrenzen ausgeschlossen werden, z.B. indem die Arraygröße bzw. die maximal einzulesende Zeichenzahl übergeben wird:</p>
<pre><code class="language-cpp">void EINGABEB(char *eingabe, int size) 
{
fgets(eingabe, size, stdin);
// TODO prüfen ob Eingabe korrekt, z.B. ob ne Zahl vorkommt, etc.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1743855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743855</guid><dc:creator><![CDATA[puff0r]]></dc:creator><pubDate>Wed, 15 Jul 2009 23:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to Typ überprüfung, für mich unbekannter fehler [gelöst] on Wed, 15 Jul 2009 23:19:31 GMT]]></title><description><![CDATA[<p>P.S. Name auf Zahlinhalt checken.</p>
<pre><code class="language-cpp">bool name_contains_number ( const char* name )
{
	const char* s = name;
	while(*s)
	{
		if ( *s &gt;= '0' &amp;&amp; *s &lt;= '9' )
			return true; // Name enthält eine Zahl.
		s++;
	}
	return false; // Name enthält keine Zahl.
}

if( name_contains_number ( &quot;puff0r 007&quot; ))
		puts(&quot;Name contains number!&quot;);
else
puts(&quot;Name OK&quot;);
</code></pre>
<p><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/1743858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743858</guid><dc:creator><![CDATA[puff0r]]></dc:creator><pubDate>Wed, 15 Jul 2009 23:19:31 GMT</pubDate></item></channel></rss>