<?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[Problem bei Verwendung von array &#x2F; pointern in Funktionen]]></title><description><![CDATA[<p>Hallo allerseits,<br />
studiere Angewandte Informatik 1. Semester, bin also Neuling auf dem Gebiet!</p>
<p>Ich habe folgenden Sachverhalt:<br />
Es wird verlangt die Prüfziffern von ISBN Nummern zu berechnen (sind auch noch andere Nummern gefordert, das Prinzip ist aber das gleiche und tut nichts zur Sache). Die ISBN Nummern lasse ich in ein char array einlesen (char und nicht int array, wegen der &quot;-&quot; und Leerzeichen die üblicherweise mit eingegeben werden). Die&quot;-&quot; und Leerzeichen eleminiere ich aus den Feldern (mit isdigit), so dass nur die Ziffern übrig bleiben.<br />
Da ich mit der ISBN Berechnungen machen muss, wandel ich das char array mit atoi in ein int array um.</p>
<p>Nun mein Problem:<br />
1. Wie kann ich das eingelesene char array (in meiner input funktion) weiter verwenden z.b. zur Ausgabe in meiner output funktion?<br />
2. Wie kann ich, wenn ich das char array in ein int array umgewandelt habe, das int array zu weiteren berechnungen verwenden?</p>
<p>hier der quelltext von meiner input und output funktion, sowie die umwandlung von einem char array in ein int array:</p>
<pre><code class="language-cpp">// die IO header
#ifndef IO_H
#define IO_H

void input();
void output(char isbn[], const int ISBN_GROESSE);
const int ISBN_GROESSE = 27;
const int EAN_GROESSE = 29;
const int UIC_GROESSE = 25;
int answer = 0;
char isbn[ISBN_GROESSE];
char ean[EAN_GROESSE];
char uic[UIC_GROESSE];] 

// die IO .cpp

#include &quot;IO.h&quot;
#include&lt;iostream&gt;
#include&lt;string.h&gt;

void input() 
{

	printf(&quot;##### Pruefzifferfunktionen ######&quot;);
	printf(&quot;\n\n0: Beenden \n1: ISBN \n2: EAN / GTIN\n3: UIC \n&quot;);
	scanf(&quot;%d&quot;, &amp;answer);

	switch(answer){
	case 0: break;
	case 1: printf(&quot;Bitte geben Sie eine ISBN Nummer ein (ISBN-10 oder ISBN-13): &quot;); 
			getchar();
			gets(isbn); 
			break;

	case 2: printf(&quot;Bitte geben Sie eine EAN oder GTIN Nummer ein: &quot;); 
			getchar();
			gets(ean); 
			break;

	case 3: printf(&quot;Bitte geben Sie eine UIC Nummer ein: &quot;); 
			getchar();
			gets(uic);
			break;

	default: printf(&quot;Fehler bei der Auswahl&quot;);
			 break;
	}
}

void output(char isbn[], const int ISBN_GROESSE)
{
	printf(&quot;Die ISBN Nummer lautet: %s&quot;, isbn);
}

// und die Umwandlung von char array in int array

#include&quot;berechnungen.h&quot;
#include&quot;IO.h&quot;
#include&lt;iostream&gt;

void chartoint(char cnumbers[])
{
	char temp;
	const int len = sizeof(cnumbers) / sizeof(char);
	int inumbers[len];

	for (int i = 0; i &lt;= len; i++){
		temp = cnumbers[i];
		inumbers[i] = atoi(&amp;temp);
	}
}

// und hier die Berechnung der ISBN-10 bzw. -13

int isbn_berechnung(int inumbers[], int parameter) // parameter entscheidet, ob prüfziffer verglichen werden soll oder zurückgegeben, 0 = vergleich, 1 = zurückgeben
{
	int n = sizeof(inumbers) / sizeof(int);
	int pruefz = 0;
	int a = 1;
	int temp;

	if(n == 10){
		for(int i = 1; i &lt;= n-1; i++){
			pruefz += i * inumbers[i];
		}
		pruefz %= 11;
	}

	else
		if(n == 13){
			for(int i = 1; i &lt;= n-1; i++){
				temp = inumbers[i];
				if(temp % 2 == 0)
					a = 3;
				else
					if(temp % 2 != 0)
						a = 1;

				pruefz += a * inumbers[i];
			} 
			pruefz = 10 - pruefz;
			pruefz %= 10;
			pruefz %= 10;
		}
		else
			printf(&quot;ISBN ungueltig&quot;);

	if(parameter == 0){
		if(inumbers[n-1] == pruefz)
			return true;
		else
			return false;
</code></pre>
<p>Vielen Dank im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297829/problem-bei-verwendung-von-array-pointern-in-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 06:39:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297829.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jan 2012 21:59:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sat, 07 Jan 2012 22:03:00 GMT]]></title><description><![CDATA[<p>Hallo allerseits,<br />
studiere Angewandte Informatik 1. Semester, bin also Neuling auf dem Gebiet!</p>
<p>Ich habe folgenden Sachverhalt:<br />
Es wird verlangt die Prüfziffern von ISBN Nummern zu berechnen (sind auch noch andere Nummern gefordert, das Prinzip ist aber das gleiche und tut nichts zur Sache). Die ISBN Nummern lasse ich in ein char array einlesen (char und nicht int array, wegen der &quot;-&quot; und Leerzeichen die üblicherweise mit eingegeben werden). Die&quot;-&quot; und Leerzeichen eleminiere ich aus den Feldern (mit isdigit), so dass nur die Ziffern übrig bleiben.<br />
Da ich mit der ISBN Berechnungen machen muss, wandel ich das char array mit atoi in ein int array um.</p>
<p>Nun mein Problem:<br />
1. Wie kann ich das eingelesene char array (in meiner input funktion) weiter verwenden z.b. zur Ausgabe in meiner output funktion?<br />
2. Wie kann ich, wenn ich das char array in ein int array umgewandelt habe, das int array zu weiteren berechnungen verwenden?</p>
<p>hier der quelltext von meiner input und output funktion, sowie die umwandlung von einem char array in ein int array:</p>
<pre><code class="language-cpp">// die IO header
#ifndef IO_H
#define IO_H

void input();
void output(char isbn[], const int ISBN_GROESSE);
const int ISBN_GROESSE = 27;
const int EAN_GROESSE = 29;
const int UIC_GROESSE = 25;
int answer = 0;
char isbn[ISBN_GROESSE];
char ean[EAN_GROESSE];
char uic[UIC_GROESSE];] 

// die IO .cpp

#include &quot;IO.h&quot;
#include&lt;iostream&gt;
#include&lt;string.h&gt;

void input() 
{

	printf(&quot;##### Pruefzifferfunktionen ######&quot;);
	printf(&quot;\n\n0: Beenden \n1: ISBN \n2: EAN / GTIN\n3: UIC \n&quot;);
	scanf(&quot;%d&quot;, &amp;answer);

	switch(answer){
	case 0: break;
	case 1: printf(&quot;Bitte geben Sie eine ISBN Nummer ein (ISBN-10 oder ISBN-13): &quot;); 
			getchar();
			gets(isbn); 
			break;

	case 2: printf(&quot;Bitte geben Sie eine EAN oder GTIN Nummer ein: &quot;); 
			getchar();
			gets(ean); 
			break;

	case 3: printf(&quot;Bitte geben Sie eine UIC Nummer ein: &quot;); 
			getchar();
			gets(uic);
			break;

	default: printf(&quot;Fehler bei der Auswahl&quot;);
			 break;
	}
}

void output(char isbn[], const int ISBN_GROESSE)
{
	printf(&quot;Die ISBN Nummer lautet: %s&quot;, isbn);
}

// und die Umwandlung von char array in int array

#include&quot;berechnungen.h&quot;
#include&quot;IO.h&quot;
#include&lt;iostream&gt;

void chartoint(char cnumbers[])
{
	char temp;
	const int len = sizeof(cnumbers) / sizeof(char);
	int inumbers[len];

	for (int i = 0; i &lt;= len; i++){
		temp = cnumbers[i];
		inumbers[i] = atoi(&amp;temp);
	}
}

// und hier die Berechnung der ISBN-10 bzw. -13

int isbn_berechnung(int inumbers[], int parameter) // parameter entscheidet, ob prüfziffer verglichen werden soll oder zurückgegeben, 0 = vergleich, 1 = zurückgeben
{
	int n = sizeof(inumbers) / sizeof(int);
	int pruefz = 0;
	int a = 1;
	int temp;

	if(n == 10){
		for(int i = 1; i &lt;= n-1; i++){
			pruefz += i * inumbers[i];
		}
		pruefz %= 11;
	}

	else
		if(n == 13){
			for(int i = 1; i &lt;= n-1; i++){
				temp = inumbers[i];
				if(temp % 2 == 0)
					a = 3;
				else
					if(temp % 2 != 0)
						a = 1;

				pruefz += a * inumbers[i];
			} 
			pruefz = 10 - pruefz;
			pruefz %= 10;
			pruefz %= 10;
		}
		else
			printf(&quot;ISBN ungueltig&quot;);

	if(parameter == 0){
		if(inumbers[n-1] == pruefz)
			return true;
		else
			return false;
</code></pre>
<p>Vielen Dank im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165049</guid><dc:creator><![CDATA[kinske]]></dc:creator><pubDate>Sat, 07 Jan 2012 22:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sat, 07 Jan 2012 22:06:03 GMT]]></title><description><![CDATA[<p>Bis auf &quot;include &lt;iostream&quot; C Code. Na was solls sein, C oder C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165053</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sat, 07 Jan 2012 22:06:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sat, 07 Jan 2012 22:15:57 GMT]]></title><description><![CDATA[<p>soll schon c++ sein (umgebung ist visual studio 2010), aber unser prof legt wert darauf, dass es allgemein gehalten wird und größtenteils für c++ aber auch für c gültig / verwendbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165058</guid><dc:creator><![CDATA[kinske]]></dc:creator><pubDate>Sat, 07 Jan 2012 22:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sat, 07 Jan 2012 22:17:41 GMT]]></title><description><![CDATA[<p>C != C++</p>
<p>!?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165059</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Sat, 07 Jan 2012 22:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sat, 07 Jan 2012 22:27:43 GMT]]></title><description><![CDATA[<p>ja ich weiß, aber es soll c++ sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165064</guid><dc:creator><![CDATA[kinske]]></dc:creator><pubDate>Sat, 07 Jan 2012 22:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sat, 07 Jan 2012 22:40:32 GMT]]></title><description><![CDATA[<p>kinske schrieb:</p>
<blockquote>
<p>ja ich weiß, aber es soll c++ sein...</p>
</blockquote>
<p>Bis auf das #include&lt;iostream&gt; ist das aber lupenreines C. Sollen wir alles umschreiben oder nimmst du einfach diese Zeile raus und machst dann eben C (das scheint alles zu sein, was du bisher kannst)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165072</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 07 Jan 2012 22:40:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sat, 07 Jan 2012 23:43:49 GMT]]></title><description><![CDATA[<p>Hmmm ok.<br />
Also für mich würde jetzt der Unterschied zu C++ nur anstatt printf - cout zu verwenden und anstatt gets - cin.getline ausmachen.<br />
Kommt darauf an, was alles umgeschrieben werden muss?<br />
Ansonsten würde ich prinzipiell sagen weiter C verwenden, wenn es jedoch einfacher in C++ ist würde ich dieses bevorzugen <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/2165108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165108</guid><dc:creator><![CDATA[kinske]]></dc:creator><pubDate>Sat, 07 Jan 2012 23:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sun, 08 Jan 2012 00:23:55 GMT]]></title><description><![CDATA[<p>kinske schrieb:</p>
<blockquote>
<p>Hmmm ok.<br />
Also für mich würde jetzt der Unterschied zu C++ nur anstatt printf - cout zu verwenden und anstatt gets - cin.getline ausmachen.</p>
</blockquote>
<p>Wenn du unter C++ ein C mit cout und cin verstehst, dann bleib lieber bei C.</p>
<blockquote>
<p>Kommt darauf an, was alles umgeschrieben werden muss?<br />
Ansonsten würde ich prinzipiell sagen weiter C verwenden, wenn es jedoch einfacher in C++ ist würde ich dieses bevorzugen <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>
</blockquote>
<p>C ist erst einmal einfacher, außerdem ist es das was du kannst. C++ wird stark gegenüber C, wenn man objektorientiert und/oder generisch programmieren möchte. Außerdem hat es eine größere Standardbibliothek die einige der furchtbarsten Sachen in C (Zeichenkettenverarbeitung, dynamische Speicherverwaltung) ziemlich vereinfacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165126</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 08 Jan 2012 00:23:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sun, 08 Jan 2012 09:11:08 GMT]]></title><description><![CDATA[<p>Ich meinte das eher im Bezug nur auf meinen Quelltext.<br />
Dann wäre mir eine Lösung in C++ lieber!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165169</guid><dc:creator><![CDATA[kinske]]></dc:creator><pubDate>Sun, 08 Jan 2012 09:11:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Verwendung von array &#x2F; pointern in Funktionen on Sun, 08 Jan 2012 10:16:15 GMT]]></title><description><![CDATA[<p>Du kannst keinen C++ Code verwenden, wenn &quot;es auch für C gültig sein soll&quot;.<br />
Globale Variablen sind Schrott.<br />
Übergebe aus deinem aufrufenden Kontext den in der Funktion zu verarbeitenden Speicherbereich:</p>
<pre><code class="language-cpp">int input(char (*s)[100])
{
  int answer;
    printf(&quot;##### Pruefzifferfunktionen ######&quot;);
    printf(&quot;\n\n0: Beenden \n1: ISBN \n2: EAN / GTIN\n3: UIC \n&quot;);
    if( 1!=scanf(&quot;%d&quot;, &amp;answer)) return 0; while('\n'!=getchar());

    switch(answer){
    case 1: printf(&quot;Bitte geben Sie eine ISBN Nummer ein (ISBN-10 oder ISBN-13): &quot;);
            break;

    case 2: printf(&quot;Bitte geben Sie eine EAN oder GTIN Nummer ein: &quot;);
            break;

    case 3: printf(&quot;Bitte geben Sie eine UIC Nummer ein: &quot;);
            break;

    default: printf(&quot;Fehler bei der Auswahl&quot;);
             return 0;
    }
    fgets(*s,sizeof*s,stdin); if( strchr(*s,'\n') ) *strchr(*s,'\n')=0; else while('\n'!=getchar());
    return answer;
}

...
char str[100];
int a = input(&amp;str);
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2165193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165193</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Sun, 08 Jan 2012 10:16:15 GMT</pubDate></item></channel></rss>