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.


  • Mod

    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...


Anmelden zum Antworten