kleine Textfunktion - Probleme
-
cool das funktioniert!
jetzt errinere ich mich auch wieder das es da auch unterschiede zwischen %i und %c gibt.ich hab mich ja schon über die arrays informiert, und sie scheinen ja auch ähnlich zu sein wie die die man von php kennt.
ich hab mir hier was überlegt:
write(hallo, 500) das hallo irgendwie in die einzelnen buchstaben sprengen, und in einen array schreiben. int = 1; i = 0; while($array[i]) { printf("%c", array[i]); sleep(x); i++; } }
kann man das irgendwie realisieren?
-
Du meinst sowas?
#include <cstdio> #include <ctime> void sleep( clock_t wait ) { clock_t goal; goal = wait + clock(); while( goal > clock() ); } void SlowPrint(char* str,int ms) { while(*str) { putc(*str++,stdout); sleep(ms); } } int main() { SlowPrint("Hallo Welt!",500); return 0; }
-
Danke!
ich hab mir das nötige mal herausgesammelt und meine eigene funktion verfollständigt:
write(char* str, int ms) { while(*str) { printf("%c", *str); Sleep(ms); *str++; } }
danke euch damit wäre mein Frage geklärt!
-
weasel schrieb:
*str++;
Das Sternchen hier ist unnötig, kannst du weglassen. Du willst ja hier nur den Zeiger inkrementieren, ihn aber nicht dereferenzieren.
-
nicht
... *str++; ...
sondern
... str++; ...
-
grr
-
weasel schrieb:
char A[10] = { 'a', 2, 3, 4, 5 }; int i; i = 0; while(A[i]) { printf"%i ", A[i]; i++; } }
Was dabei rauskommt ist:
97 2 3 4 5
Da hast du aber Glück gehabt, dass deine while-Bedingung zufällig gleich nach <5> auf eine 0 gestossen ist, die Endekennzeichnung hast du nämlich vergessen.
Auch meintest du wahrscheinlich die ASCII Zeichen '2'...'5' und nicht die Zeichen an 3...6 Stelle in der ASCII-Tabelle.
Außerdem initialisiert man char-Arrays in C einfacher mit
char A[]={'a','2','3','4','5','\0'};
oder
char A[6]={'a','2','3','4','5'};
oder
char A[]="a2345";
oder
char *A="a2345";Wenn du mir die Unterschiede dieser Initialisierungsvarianten nennen kannst, kannst du deine Einarbeitungsphase in C-Strings als beendet ansehen
-
Wutz schrieb:
char A[]={'a','2','3','4','5','\0'};
oder
char A[6]={'a','2','3','4','5'};
oder
char A[]="a2345";
oder
char *A="a2345";Wenn du mir die Unterschiede dieser Initialisierungsvarianten nennen kannst, kannst du deine Einarbeitungsphase in C-Strings als beendet ansehen
hm
also die ersten beiden sind ja bekannt. einmal unbestimmte anzahl mit ende \0. und einmal vorgegeben.
aber die anderen beiden.... da kann ich nur raten.
-
weasel schrieb:
hm
also die ersten beiden sind ja bekannt. einmal unbestimmte anzahl mit ende \0. und einmal vorgegeben.
aber die anderen beiden.... da kann ich nur raten.Das ist nicht bestanden. Nochmal C-Strings und Arrays angucken!
-
Wutz schrieb:
Da hast du aber Glück gehabt, dass deine while-Bedingung zufällig gleich nach <5> auf eine 0 gestossen ist, die Endekennzeichnung hast du nämlich vergessen.
ich glaub du gehst nochmal in die c vorschule wutzi...