Arrays < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:24 Do 15.01.2009 | Autor: | sceetch |
Aufgabe | Was passiert bei folgender Zuweisung?
char meinString [21]
strcpy (meinString, "Ich weiss nicht mehr,"); |
was passiert da?
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 12:49 Do 15.01.2009 | Autor: | sceetch |
Aufgabe | ahhh jetzt hab ichs glaub verstanden.
Also wenn ich ein Feld habe mit [10]
dann habe ich eigentlich nur 9 zeichen zur verfügung weil auf der letzten stelle da [mm] \0 [/mm] ist.
Daraus schliesse ich das das zeichen [mm] \0 [/mm] immer auf das letzte Element des Arrays gesetzt wird |
was meintest du mit den "?
Das hab ich nicht verstanden.
Also in meinem oben genannten Bsp. würde ein error kommmen?
Das er quasi nur 20 zeichen + /0 ausspuckt ist nicht der Fall???
|
|
|
|
|
Ja dies ist richtig:
> ahhh jetzt hab ichs glaub verstanden.
> Also wenn ich ein Feld habe mit [10]
> dann habe ich eigentlich nur 9 zeichen zur verfügung weil
> auf der letzten stelle da [mm]\0[/mm] ist.
> Daraus schliesse ich das das zeichen [mm]\0[/mm] immer auf das
> letzte Element des Arrays gesetzt wird
Die ist dann eine sogenannte "Charfolge" oder "Zeichenfolge" da es unter "C" keine Strings gibt! Unter C++ würde man z.B. AnsiString meinString nutzen!
Die Zeichen haben die 'Backslash 0' eingeschlossen, hatte es eben etwas eilig und vergaß das, das Forum einige Zeichen als "Symbol" umwandelt mit dem Backslash!
> was meintest du mit den "?
> Das hab ich nicht verstanden.
Was den Error angeht, wenn du das Semikolon weg läßt auf jeden Fall!
> Also in meinem oben genannten Bsp. würde ein error
> kommmen?
> Das er quasi nur 20 zeichen + /0 ausspuckt ist nicht der
> Fall???
//============================================================================
// Name : vorhilfe_arry.cpp
// Author : Kerberos2008
// Version :
// Copyright : Hilfestellung Array
// Description : Array in C, Ansi-style
//============================================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char meinString [22];
int laenge = 0;
strcpy (meinString, "Ich weiss nicht mehr,");
laenge = strlen(meinString);
printf("%s Laenge: %d",meinString,laenge);
return 0;
}
Was die Zeichenketten angeht:
In C ist es folgendermaßen:
Funktioniert: (Null wird bei "" automatisch angefügt)
1. char meinString [21] = "Ich weiss nicht mehr,";
Fehler wenn keine NULL am Ende:
2. char meinString [21] = 'I''c''h' ... ',''Backslash 0'
Achso - dies letzte hatte ich vergessen (war vorhin wie besagt in Eile) das heißt die 21 Zeichen werden übergeben und ausgegeben! *Siehe Sourcecode*
-> Nur wenn du einzelne Char's übergibst dann muß die Backslash Null angehängt werden!
Kannst hier auf diese Art also deine Zeichenkette kopieren oder übergeben und dein Array ist ausreichend! ;)
*Sorry, war heute morgen noch sehr in Mathe vertieft und mußte zur BWL Vorlesung*
Dateianhänge: Anhang Nr. 1 (Typ: rar) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:20 Sa 17.01.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|