Ausgabe von Zeichen



  • allo liebe Coder-Gemeinde,

    ich habe folgendes Problem.

    Ich habe ein Programm geschrieben das mir nur eine Ausgabe gibt wenn ich mehr als 80 Zeichen eingegeben habe.

    Nun möchte ich das mir das Programm nur die Zeile ausgibt die mehr als 80 hat.

    Bsp:

    1.Zeile: 22222222222222222222222 <-- = keine Ausgabe
    3.Zeile: 222222222222222222222222222222222222222222(angenommen das wären 80 Zeichen)
    dann soll er mir nur diese Ausgeben.

    hier mein Code:

    #include
    #define MAXCHAR 1000
    
    void main()
    {
    int iZaehler;
    int iEnd;
    int iEingabe;
    int array[MAXCHAR];
    
    for (iZaehler = 0; iZaehler < MAXCHAR && (iEingabe = getchar()) != '\n'; iZaehler++) // Eingabe von Zeichen
    {
    array[iZaehler] = iEingabe; // Setzen der Zeichen in das Array
    }
    // neues Ende festlegen
    for (iZaehler = MAXCHAR; iZaehler <= MAXCHAR && iZaehler > 0; iZaehler--)
    {
    if (array[iZaehler] == '\0') // Suchen im Array nach Zeilenende
    {
    iEnd = iZaehler; // Neues Ende wird festgelegt
    }
    }
    // Array ausgeben
    if ((iEnd-1) >= 80) // Suche, ob Eingabezeile 80 Zeichen und mehr hat
    {
    for (iZaehler = 0; array[iZaehler] != '\0'; iZaehler++) // Ausgabe des Arrays
    {
    printf("%c", array[iZaehler]);
    }
    }
    }
    

    Vielleicht hat jem. einen kleinen Tipp für mich wie ich das weiter angehen könnte.

    viele Grüße
    Mimas



  • Hallo,

    du liest einen String ein (mittels fgets). Dann prüfst du mittels strlen, wie lange der eingegebene Text ist. Wenn er größer als 80 ist, haust du ihn mit printf raus, sonst nicht. Den ganzen Codeblock umgibt ne Schleife. (Ach ja, unter www.cppreference.com findest du die von mir erwähnten Funktionen).

    Pseudocode:

    loop:
      print "Bitte Text eingeben"
      Text einlesen
      Textlänge ermitteln
      Wenn Textlänge > 80
        print Text
    

    MfG

    GPC



  • Hallo GPC,

    👍 vielen dank für deine Hilfe.. 👍
    Die Funktionen sind mit beide neu und auch soweit ich im Buch bin noch nicht durchgenommen worden..
    Werde mir das mal anlesen und versuchen es umzusetzen.

    mfg
    Mimas



  • ich bins nochmal...

    habe mir mal ein Beispiel dazu aus dem Netz geholt.

    #include <stdio.h>
    #include <string.h>
    
    main()
    {
    	char satz[80];
    
    	printf("\nBitte einen Satz eingeben\n>");
    
    	gets(satz);
    
    	printf("\n%s", satz);
    	printf("\nDer Satz besteht aus %i Zeichen.", strlen(satz));
    
    	printf("\n\nsatz[15] erhaehlt eine binaere Null.\n");
    
    	satz[15] = '\0';
    
    	printf("\n%s", satz);
    	printf("\nDer Satz besteht aus %i Zeichen.", strlen(satz));
    }
    

    Glaubst du dieses Bepspiel ist übertragbar auf mein Problem? wie gesagt das ist mir recht neu, und die beiden Funtionen werden auch erst etwa 150 Seiten später besprochen.

    Viele Grüße Mimas



  • Es ist teilweise übertragbar...

    #include <stdio.h>
    #include <string.h>
    
    //User darf max. 120 Zeichen eingeben, sonst geht uns die Puste aus
    #define MAX_CHARS 120
    
    int main(int argc, char *argv[]) {
      char text[MAX_CHARS];
    
      int counter = 5; //setz hier deinen Wert ein, so oft du halt magst
      int len = 0;
    
      while (counter != 0) {
        puts("Bitte einen Satz eingeben:");
        fgets(text, MAX_CHARS, stdin);
        len = strlen(text);
    
        if (len > 80)
          printf("%s\n", text);
    
        --counter;
      }
    
      return 0;
    }
    

    So, ist ungetestet, sollte aber funktionieren.

    MfG

    GPC



  • du bist mir wirklich eine große Hilfe..

    was du mir geschrieben hast hat auch soweit funktioniert, finde das mit der mehrmaligen Eingabe auch besser.
    Im Debugger liest er die Zeichen auch ein, nur ausgeben will er mir noch nicht den Satz der über die Anzahl der Zeichen kommt..

    werde mal weiter testen.--

    mfg
    Mimas


Anmelden zum Antworten