Pointer auf?
-
blizzarac schrieb:
Wieso sollte man ein char element als unsigned deklarieren ist das nicht quatsch?
sollte man garnicht. ASCII ist nur 7-bittig und wird damit von signed und unsigned char abgedeckt. ob "char" nun signed oder unsigned ist, wen kuemmerts. ascii zeichen koennen allemal dargestellt werden.
-
Hätte auch mal ne Frage. Ich bin mir nicht mehr sicher aber meines Wissens zeigt ein Pointer "der auf nichts zeigt" auf NULL. Wenn nicht ist meine Frage Sinnlos und ihr könnt sie vergessen
Ein Array sind ja eigentlich mehrere pointer, somit müsste ein Arry mit 10 Elementen doch 10 mal auf NULL zeigen oder? Solange nix drinsteht, versteht sich.EDIT: Frage Nummer2:
#include <stdio.h> int main() { char c[20]; int i; for (i=0;i!='\n'&&i<=20;++i) { c[i] = getch(); putchar('*'); } }
Ich wollte mal eine Eingabe durch sterne ersetzen (ok ersetzen nicht, weil getch() zeigts ja erst gar nicht an aber ok
)
Wenn ich jetzt aber eine Eingabe mache bricht er nach 10 Zeichen ab. Bin ich blöd oder steht da 20???
Wieso nimmt er nicht 20 Zeichen?
-
Also soweit ich weiss zeigen nicht initialisierte Pointer irgentwo hin aber nicht automatisch auf NULL, was sie gefährlich macht und meistens zu Programmabbrüchen führt.
-
ein pointer ist ne adresse.
ein char[10] "zeigt" irgendwo in den speicher, wo 10 chars stehen.ein pointer zeigt also nicht auf NULL, er IST NULL.
ein pointer zeigt aber z.b. auf einen int, also IST er die adresse der stelle im speicher, wo der wert von diesem int steht.
-
Ok danke dir
(bzw euch)
Und mein "Programm" da oben? Ich blicks einfach net warum des nach 10 Eingaben abbricht
-
i!='\n' // falsch! was steht in i?
&&
i<=20 // falsch! i < 20, sonst bist du ueber der arraygrenze
-
Hm danke jetzt gehts er ziehts durch. Was mich verwirrt: \n = 13. Also da in dem Fall i = 10 ist wieso bricht es dann schon bei 10 ab und nicht erst bei 13?
-
i ist nur der Zähler der vergleich i!=\n ist unsinnig es muss c[i]!=\n heissen
-
Sagte ich schon
War vielleicht undeutlich. hab jetzt c[i] mein Fehler...
Aber wenn i = '\n' ist doch i als Integerwert 13 oder? wieso bricht es dann bei 10 ab?
-
Craw schrieb:
Aber wenn i = '\n' ist doch i als Integerwert 13 oder? wieso bricht es dann bei 10 ab?
\n ist 10, 13 ist \r
-
net schrieb:
Craw schrieb:
Aber wenn i = '\n' ist doch i als Integerwert 13 oder? wieso bricht es dann bei 10 ab?
\n ist 10, 13 ist \r
Achso ok. Ich hatte mir halt ein Prog geschrieben vom Sinn:
c = getch();
printf(%d" c);
Da hats halt bei Enter 13 angezeigt... warum denn das wieder -.-
Danke euchEDIT: Strg+Enter ist bei mir 10 ... naja egal^^
-
Craw schrieb:
Achso ok. Ich hatte mir halt ein Prog geschrieben vom Sinn:
c = getch();
printf(%d" c);
Da hats halt bei Enter 13 angezeigt... warum denn das wieder -.-
Danke euchUnter Windows löst die ENTER-Taste die Folge \r\n aus - die meisten C-Funktionen wissen das und ignorieren dann das \r.