Psycho~zicke Geschrieben 23. Oktober 2007 Geschrieben 23. Oktober 2007 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 Zitieren
Guybrush Threepwood Geschrieben 23. Oktober 2007 Geschrieben 23. Oktober 2007 äh die Funktion ist doch in dem Code da oben definiert :confused: Zitieren
Psycho~zicke Geschrieben 23. Oktober 2007 Autor Geschrieben 23. Oktober 2007 oh man... danke :upps heut is echt nicht mein Tag! Zitieren
Empfohlene Beiträge
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.