Zeichenketten < Sonstige < Schule < Informatik < Vorhilfe
|
Aufgabe | Gegeben sind zwei Variablen strA und strB. Welche Ausgabe erzeugt dann
das folgende Code-Fragment?
char strA[] = [mm] "Guten\nMorgen!";
[/mm]
char strB[] = {'T', 'e', 'x', 't'};
[mm] printf("%s\n", [/mm] strA);
[mm] printf("%c%c%c\n", [/mm] strA[1], strA[2], strA[3]);
strB[3] = strA[13];
[mm] printf("%s\n", [/mm] strB+1); |
Meine Ausgaben lauten:
[mm] printf("%s\n", [/mm] strA); -> Guten Morgen!
[mm] printf("%c%c%c\n", [/mm] strA[1], strA[2], strA[3]); -> ute
strB[3] = strA[13];
[mm] printf("%s\n", [/mm] strB+1); -> ex
Ist das so richtig?
danke
zusätzliche Frage:
Wieviel Speicherplatz in Bytes belegen jeweils die beiden Variablen strA und strB?
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:02 Sa 22.08.2009 | Autor: | fencheltee |
> Gegeben sind zwei Variablen strA und strB. Welche Ausgabe
> erzeugt dann
> das folgende Code-Fragment?
code solltest du in zukunft mit [code]irgendein code[/code] einfügen (damit mans auch lesen kann)
>
1: | char strA[] = "Guten\nMorgen!";
| 2: | char strB[] = {'T', 'e', 'x', 't'};
| 3: |
| 4: | printf("%s\n", strA);
| 5: | printf("%c%c%c\n", strA[1], strA[2], strA[3]);
| 6: | strB[3] = strA[13];
| 7: | printf("%s\n", strB+1);
|
> Meine Ausgaben lauten:
>
> [mm]printf("%s\n",[/mm] strA); -> Guten Morgen!
> [mm]printf("%c%c%c\n",[/mm] strA[1], strA[2], strA[3]); -> ute
> strB[3] = strA[13];
> [mm]printf("%s\n",[/mm] strB+1); -> ex
>
> Ist das so richtig?
>
> danke
hilfreich wären entwicklungsumgebungen wie dev-c++ bzw java um das ergebnis direkt überprüfen zu können
>
> zusätzliche Frage:
> Wieviel Speicherplatz in Bytes belegen jeweils die beiden
> Variablen strA und strB?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:13 So 23.08.2009 | Autor: | Infinit |
Hallo,
wie kann ein "Guten Morgen!" zustande kommen, wenn "Morgen!" nirgends zugewiesen wurde?
Der "ute"-Ausdruck ist okay.
Bei der nächsten Zuweisung sollte ein guter Compiler sagen, dass dies nicht geht, da die Bereichsgrenze überschritten wurde. Irgendwas steht wahrscheinlich an dieser Stelle A(13) im Speicher drin, aber was, weiss kein Mensch. Ensprechend nicht nachvollziehbar ist die Ausgabe für strB+1.
strA braucht 7 Byte, strB 4 Byte.
VG,
Infinit
|
|
|
|