Vollständige Version anzeigen : C: Was bedeutet char str[20]?


Gutschy
03.01.2016, 00:51

Hallo Leute,

bin mal mit C angefangen. Hab schon einiges zu Python und VB/A gelesen und probiert. Ist jetzt auch hier mehr eine Frage zur Form.

/* suchmenge1;c */
#include <stdio;h>

int main(void) {
char str[20];
printf("Bitte geben Sie nur Zahlen ein: ");
scanf("%[0-9]", str);
printf("%s\n",str);
return 0;
}


Die Zeile wo "char str[20];" steht, was soll mir 20 sagen. Ich sehe da nur eine Variable vom Typen char die str heisst. Ohne die 20 funkt. es schon mal nicht. Aha.

Schon mal Danke für eure Hilfe.

Gruss,

gutschy

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Dimi
03.01.2016, 11:22

Das ist ein char Array der Größe 20. D;h. du kannst in dieser Variable eine bis zu 19 Zeichen lange Zeichenkette, inklusive terminierendem '\0'-Zeichen speichern.

Mehr dazu hier: Rheinwerk Computing :: C von A bis Z &ndash; 11;11 Strings/Zeichenketten (»char«-Array) (;openbook;rheinwerk-verlag~de/c_von_a_bis_z/011_c_arrays_011;htm)


Gutschy
03.01.2016, 12:22

Hi Dimi,
das mit dem Array war auch mein erster Gedanke, allerdings kann ich auf meinem PC 23 Ziffern übergeben, die dann wieder ausgegeben werden, übergebe ich mehr, z;B. 30 Ziffern, werden die auch wieder ausgegeben aber es kommt ein Speicherzugriffsfehler dazu. Das hatte mich gewundert und darum war ich mir nicht sicher was ich das vor mir habe. Gibt es einen Grund für dieses Verhalten?

Gruss,

Gutschy


xXsoureXx
03.01.2016, 12:56

[..;] Gibt es einen Grund für dieses Verhalten?

Glück. Du forderst einen Speicher für 20 character an. Alles was hinter diesem Adressblock liegt, ist erstmal undefiniert. Und je nachdem wie die Sterne grad stehen hast du Glück und dein Programm läuft durch, oder halt nicht.


Gutschy
03.01.2016, 13:06

Aha.
Habe ich dann hier schon einen so genannten Buffer Overflow?


pattich
03.01.2016, 14:30

Aha.
Habe ich dann hier schon einen so genannten Buffer Overflow?


genau


Gutschy
03.01.2016, 15:22

Na Geil, find ich witzig. Danke an Alle für die Hilfe.


Ähnliche Themen zu C: Was bedeutet char str[20]?
  • [C/C++] unsigned char
    Hallo lieber RR'ler ^^ Ich brauch für einen Parameter einen unsigned char... mein "Text" ist aber ein AnsiString und nun bekomme ich ne Fehlermeldung: [C++ Fehler] Unit1;cpp(26): E2034 Konvertierung von 'AnsiString' nach 'unsigned char' nicht möglich Wie kann ich das vorher umwandeln oder was [...]

  • [C/C++] char??
    Hi mir ist ein Problem aufgefallen, was ich mir irgenwie nicht erklären kann.... #include <iostream> using namespace std; int main() else } was ich jetzt nicht verstehe ist, das ich die bedingung bei if IMMER erfülle... auch wenn ich test eingebe ich habe natürlich auch schon d [...]

  • [PC] wow char
    hi ho ; all Kann mir jemand helfe bei der auswahl von einem wow char ich kann mich nicht so richtig entscheiden welcher char ist gut für offensives verhalten? schon mal thx für die antworten [...]

  • [C/C++] char *Test = new char[20]; int Size1 = sizeof(Test); int Size2 = sizeof(*Test);
    Tja ich hoffe, die Überschrift sagt viel... char *Test = new char[0]; cout << "sizeof *Test: " << sizeof(*Test); cout << endl << "sizeof Test: " << sizeof(Test); Wirft sizeof *Test: 1 sizeof Test: 4 aus... Das erste Ergebnis ist eindeutig das Ergebnis, eines einzigen Chars, ist aber bei einem 20 [...]



raid-rush.ws | Imprint & Contact pr