Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

J.M.K.

Alter Hase

  • »J.M.K.« ist der Autor dieses Themas

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

1

15.08.2005, 00:07

Frage zu Arrays

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>

using namespace std;

// Hauptprogramm

//

int main()
{
    // Variablen

    char Name[80];
    char Kopie[80];
    
    cout << "Wie heißen Sie?" << endl;
    cin.getline(Name, 80);
    cout << "Guten Tag, " << Name << "!" << endl;
    
    // Kopie erstellen mit Schleife

    int i;
    for (i=0; Name[i] && i<=79; i++)
    {
        Kopie[i] = Name[i];
    }
    
    Kopie[i] = 0;
    cout << "Das ist Ihre Kopie: " << Kopie << endl;
    
    system ("PAUSE");
    
    return 0;
}


Hab mal eine Frage zu diesem Code. Zu der Zeile Kopie = 0;
Warum funktioniert das?
Bei der Ausgabe der Kopie kommt der vollständige Name. Aber warum? Ich hätte jetzt gesagt das der Inhalt des I-Werts auf Null gesetzt wird (Wie bei einer Initialisierung). Aber warum wird einfach der I-Wert auf Null gesetzt das ist doch eigentlich eine Zuweisung an den I-Wert und nicht eine Manipulation des I-Wertes. Konnte man das jetzt verstehen? ;)

2

15.08.2005, 00:10

Zitat

das ist doch eigentlich eine Zuweisung an den I-Wert und nicht eine Manipulation des I-Wertes.

du setzt das i-te element deines arrays auf 0. wo ist das problem?

J.M.K.

Alter Hase

  • »J.M.K.« ist der Autor dieses Themas

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

3

15.08.2005, 00:14

Das Probelm ist das die komplette Ausgabe ausgegeben wird obwohl ich das Array nicht wieder auf seinen Startwert 0 setze oder ist das bei char-Arrays egal?

4

15.08.2005, 00:18

ach lol jetzt kapier ich glaub ich was du meinst.
gehts dir drum das du zwar 80 zeichen einliest aber
wenn der user z.b. nur 40 schreibt dann sind noch 40 undefinierte
stellen in deinem array die aber nicht ausgegeben werden
oder was meinst du ?
also wenn du sagen wir mal 50 zeichen einliest dann wird
das 51 wahrscheinl. von der funktion auf 0 gesetzt und wenn
du dann 80 zeichen kopierst kopierst du die 0 mit.
bei der ausgabe bricht er dann bei dieser 0 automatisch ab.
wenns das nich war dann blick ichs nich

J.M.K.

Alter Hase

  • »J.M.K.« ist der Autor dieses Themas

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

5

15.08.2005, 00:23

Ups habs jetzt entdeckt mein Problem war, das wenn jetzt zum Beispiel in dem Array steht Jens dann kommt die Null also Jens0 da ich dann das array ausgebe hab ich vermutet das dann einfach die Null ausgegeben wird, da das array an dieser stelle steht und da nun mal eine Null ist. Allerdings wird ja das komlette Array ausgegeben und nicht Name :) das hat mich nur ein bisschen verwirrt

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

15.08.2005, 00:43

Außerdem ist das eine binäre Null und keine alphabetische Null.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

J.M.K.

Alter Hase

  • »J.M.K.« ist der Autor dieses Themas

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

7

15.08.2005, 01:03

Dann frage ich doch gleich auch noch dazu etwas. Warum wird die Null als Binär angesehen? Bei einer normalen Zuweisung int i = 0 wird die 0 ja auch nicht binär angesehen (doch sie wird schon Binär angesehen aber halt nicht 0)

8

15.08.2005, 01:17

offensictlic habe ich deine wirren gedankengänge doch nicht verstanden.
deine letzte frage ist aber auf jeden unterhaltsam.

wie bitte kommst du drauf das bei
int i = 0;

die 0 nicht als 0 angesehen wird?

übrigens: binäre 0 == dezimale 0 !

ein char ist nix anderes als ein int auch. nur eben
lediglich ein byte groß. damit kannst du zahlen zwischen 0 & 255
speichern.

wenn du den char als ascii-zeichen interpretierst dann solltest du dir
im klaren darüber sein, dass die 0 als zeicen den wert 0x30 hat

ach ich bin einfach zu müde...das wird so nur nic verwirrender

edit: meine h-taste ist kaputt !

J.M.K.

Alter Hase

  • »J.M.K.« ist der Autor dieses Themas

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

9

15.08.2005, 01:32

Ich gebs ja zu so einen Blödsinn habe ich schon lang nicht mehr von mir gegeben. Aber irgendwie blockt mein Kopf gerade. :rolleyes:

Noch mal zum Beispiel von oben. Wenn die 0 zum beenden des Arrays gebraucht wird, sie aber nichts anderes ist wie eine normale 0, dann müsste die Null eigentlich angezeigt werden. Denn wenn ich dem Array die Zahl 0 eingebe wird die Null auch ausgegeben. Obwohl zwischen 0 eingeben und 0 zuweisen imho kein großer Unterschied besteht.

Ach ich gebs auf das heute zu verstehen.

10

15.08.2005, 02:20

NEIN !
das hab ich dir doch versucht da oben zu erlären: wenn du
die 0 eingibst also NICHT str = 0 sondern eine 0 einliest
dann entspricht das str[i] = 0x30;
weil das ZEICEN 0 den WERT 0x30 hat !
ich geh jetzt ins bett

Werbeanzeige