Psycho~zicke Geschrieben 2. November 2007 Geschrieben 2. November 2007 Hallöchen! Ich hab Folgendes Problem. Ich muss in einer Aufageb (folgt) folgen von Leerzeichen durch die korrete anzahl von Tabs und Leerzeichen ersetzen. Nun hab ich das Programm dazu geschrieben (und diesmal auch ganz ganz allein) bekomme aber immer 2 leerzeichen mehr ausgegeben wie ich eingebe. Weiß evt jemand woran das liegen kann? Ich weiß es leide rnit... Zerbrech mir nun seit gestern den kopf darüber und dacht mir jetzt evt könnt ihr mir ja helfen. Hier mal der Quellcode: *Schreibe ein Programm entab, das folgen von Leerzeichen durch die minimale *Anzahl von Tabulatorzeichen und Leerzeichen ersetzt, um die gleichen Zwischenräume *zu erzielen. Benutzen Sie die gleichen Tabulatorpositionen wie für detab. Wenn *entweder ein Tabulatorzeichen oder ein Leerzeichen genügen würden, um eine *Tabulatorposition zu erreichen, was sollte bevorzugt werden? * ********************************************************/ #include <stdio.h> #define Tab 4 void main() { // deklaration der variablen int iEingabe; // Eingabetext int leer; // Anzahl der Leerzeichen int atab; // Anzahl der Tabulatoren int rest_leer; // restliche leerzeichen nach abzug der tabs // Zuordnung der werte leer = 0; // Anzahl der Leerzeichen atab = 0; // Anzahl der Tabulatoren rest_leer = 0; // restliche anzahl der leerzeichen nach abzug der tabs // Wird solange ausgeführt bis iEingabe A ist while ((iEingabe = getchar()) !='A') { if (iEingabe == ' ') { ++ leer; } else { if (leer !=0) { // printf ("%d", leer); atab = leer / Tab; //printf ("%d", atab); rest_leer = leer % Tab; //printf ("%d", rest_leer); while (atab !=0) { putchar ('\t'); -- atab; } while (rest_leer !=0) { putchar (' '); -- rest_leer; } } leer = 0; putchar (iEingabe); } } } Danke schon ma im Vorraus. Liebe Grüße die Zicke Zitieren
Psycho~zicke Geschrieben 2. November 2007 Autor Geschrieben 2. November 2007 Hat sich erledigt... Ich wusste nicht das der Dos editor ne eigene Tabweite hat.:upps Aus dem grund hatte ich immer 2 Zeichen mehr wie ich eingab. Trotzdem Danke Zitieren
Guybrush Threepwood Geschrieben 2. November 2007 Geschrieben 2. November 2007 Nach ein kleiner Verbesserungsvorschlag, ich würde statt dem define #define Tab 4 [/PHP] eine Variable [PHP] const int Tab = 4; benutzen. Das macht es vorallem bei größeren Programmen einfacher Fehler durch falsche Werte zu vermeiden. Zitieren
Psycho~zicke Geschrieben 3. November 2007 Autor Geschrieben 3. November 2007 ah ok... danke das ist lieb. Zitieren
qat Geschrieben 5. November 2007 Geschrieben 5. November 2007 Nach ein kleiner Verbesserungsvorschlag, ich würde statt dem define #define Tab 4 [/PHP] eine Variable [PHP] const int Tab = 4; benutzen. Das macht es vorallem bei größeren Programmen einfacher Fehler durch falsche Werte zu vermeiden. :confused: Ich kann zwar nachvollziehen dass man lieber den Compiler als den Präprozessor nimmt, aber inwiefern kann man dadurch Fehler durch falsche Werte vermeiden? Bitte um Aufklärung Zitieren
Guybrush Threepwood Geschrieben 5. November 2007 Geschrieben 5. November 2007 Der Wert in der Variablen kann zwar auch falsch sein, aber bei define kannst du alles angeben kannst was du willst, in der Variablen hast du zumindest schonmal den richtigen Datentyp. Beim define bekommst du dann zwar wenn du Glück hast direkt eine Fehlermeldung beim Compilieren, aber wenn du Pech hast halt nicht. Zitieren
qat Geschrieben 5. November 2007 Geschrieben 5. November 2007 Ok stimmt, gerade dieses Beispiel ist eigentlich gut dazu geeignet, der Name "Tab" kann schon fehlinterpretiert werden. 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.