Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

oh man... danke :upps heut is echt nicht mein Tag!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.