Zum Inhalt springen

Eingabezeilen in zwei oder mehr kürzere Zeilen teilen


Empfohlene Beiträge

Geschrieben

Hallöchen!

Also irgendwie bin ich grad bissel verwirrt. Mich verwirrt das printl total weiß garnicht was das macht un kanns auch in keinem buch finden mit dem ich grad arbeite. Wenn dies allerdings in printf abändere bekomm ich eine Fehlermeldung also scheint es so ja richtig zu sein. Wäre lieb wenn Ihr euch den Quelltext mal anschauen könntet und mir evt erklären könnt wieso bzw was dieses printl ist.

Hier der Quelltext:

*Schreibe ein Programm, das lange Eingabezeilen in zwei oder mehr kürzere Zeilen 

*teilt, und zwar nach dem letzten Zeichen eines Wortes, das noch ganz vor der 

*Spalte n in der EIngabe sthet. Sorgen Sie dafür, dass Ihr Programm sich auch für 

*sehr lange EIngabezeilen vernünftig verhält, und dass auch Zeilen verarbeitet 

*werden können, die keine Leerzeichen oder Tabulatorzeichen vor der angegebenen 

*Spalte enthalten.

* ********************************************************/



#include <stdio.h>


#define MAXSPALTE 15        // Zeilen-Spalte

#define TAB 8               // Tabulator-Spalte


char line[MAXSPALTE];        // Array für gekürzte Zeile

int exptab(int pos);         // Funktion

int findeleer(int pos);      // Funktion

int neuepos(int pos);        // Funktion

void printl(int pos);        // Funktion


void main()

{

        char iEingabe;           

        int  pos=0;       // Position der eingegebenen Zeichens


        while ((iEingabe = getchar()) != 'A')     // Eingabe von Zeichen

        {

                line[pos++] = iEingabe;         // Setzen der Zeichen ins Array

                if (iEingabe == '\t')           // Verhalten bei eingegebenem Tabulator

                {

                     pos = exptab(pos);    // Aktualisieren der Position durch Funktion

                }

                else if (iEingabe == '\n')           // Verhalten bei eingegebenem Zeilenvorschub/Enter

                {

                  [B]printl[/B](pos);          // Ausgabe der verkürzten Zeile durch Funktion

                  pos = 0;      // Position wieder auf null setzen

                }

                else if (pos >= MAXSPALTE)    // Verhalten wenn Position über Spalte hinaus geht

                {

                    pos = findeleer(pos); // mittels Funktion Stelle finden, wo Zeile abgeschnitten werden kann

                    [B]printl[/B](pos);           // Ausgabe der verkürzten Zeile

                    pos = neuepos(pos);    // neue Position feststellen durch Funktion

                }

        }

}


void printl(int pos)                           // Funktion zum Ausgeben von gekürzten Zeilen

{

        int zaehler;                        // Zähler


        for (zaehler = 0; zaehler < pos; zaehler++)  // Schleife zum Durchlaufen des Arrays

        {

            putchar(line[zaehler]);       // Ausgabe der Zeichen des Arrays

        }

        if (pos > 0)                       // 

        {

            putchar('\n');      // Ausgabe von Zeilenvorschub/Enter

        }

}


int exptab(int pos)                 // Funktion zur Behandlung von Tabulatoreingaben

{

        line[pos] = ' ';

        for (pos++; pos < MAXSPALTE && pos % TAB != 0; pos++)    

        {

            line[pos] = ' ';                                 

        }

        if (pos < MAXSPALTE)                                     

        {

            return pos;     // gibt pos zurück                                 

        }

        else                                                     

        {

            printl(pos);                                     

            return 0;     // gibt 0 zurück                                   

        }

}


int findeleer(int pos)                // Funktion zum Auffinden eines Leerzeichens zwischen Worten

{

        while (pos > 0 && line[pos] != ' ')     

        {

            pos--;              // Position wird um eins verringert

        }

        if (pos == 0)                                       

        {

            return MAXSPALTE;       // gibt MAXSPALTE zurück                      

        }

        else                                            

        {

            return pos + 1;      // gibt pos +1 zurück                             

        }

}


int neuepos(int pos)               // Funktion zum Festlegen der neuen Position

{

        int  zaehler_1,         // Zähler 1

             zaehler_2;         // Zähler 2


        if (pos <= 0 || pos >= MAXSPALTE)   // Wenn Position außerhalb Spalte

        {

          return 0;                   // liefere null an main() zurück - aktuelle Position

        }

        else                                // Wenn Position innerhalb Spalte

        {

             zaehler_1 = 0;             // Zähler auf null setzen

             for (zaehler_2 = pos; zaehler_2 < MAXSPALTE; zaehler_2++)

             {

                line[zaehler_1] = line [zaehler_2];     // Bestimmen der Position - aktuelle Position

                ++zaehler_1;

             }

          return zaehler_1;               // liefere zaehler_1 an main() zurück

        }

}

Die fehlermeldung die kommt wenn man das printl mit printf tauscht:

Error 1-22.c 42: type mismatch in parameter '_format' in call to 'printf' in funktion main

Error 1-22.c 48: type mismatch in parameter '_format' in call to 'printf' in funktion main

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...