Getchar() Methode prüfen ob ein Zeilenumbruch oder Ende der Datei
Hallo zusammen,
ich brauche eine Methode welches im Groben mir eine Eingabe mittels getchar() einließt und mit einer int-Variable welche ich festsetze wieviele Zeichen als Schranke gesetzt sind und die überschüssigen Zeichen werden abgeschnitten.
Beispiel(Textdatei Inhalt):
Hallo
Ein Test
Wenn ich jetzt als meine Schranke = 3 (value) setze, dann sollte meine Funktion beim ersten Aufruf:
Hal
ausgeben und beim 2. Aufruf:
Ein
ausgeben.
Hier mein Ansatz:
Leider liefert mir meine Methode jedes mal am Ende noch einen leeren String dieses möchte ich ausfiltern leider komme ich nicht drauf wo da mein Fehler liegt? Oder hat jmd einen besseren Ansatz?
Vielen Dank.
Beste Grüße.
ich brauche eine Methode welches im Groben mir eine Eingabe mittels getchar() einließt und mit einer int-Variable welche ich festsetze wieviele Zeichen als Schranke gesetzt sind und die überschüssigen Zeichen werden abgeschnitten.
Beispiel(Textdatei Inhalt):
Hallo
Ein Test
Wenn ich jetzt als meine Schranke = 3 (value) setze, dann sollte meine Funktion beim ersten Aufruf:
Hal
ausgeben und beim 2. Aufruf:
Ein
ausgeben.
Hier mein Ansatz:
void Input (char *string)
{
char charbuf;
char stringbuf[value + 1];
int i;
/* read characters of the input up to user-columns */
for (i = 0; i < value + 1; i++)
{
stringbuf[i] = getchar ();
// if end of the line is reached
if (stringbuf[i] == '\n')
{
// add end of the string marking
stringbuf[i] = '\0';
strcpy (string, stringbuf);
return;
}
// if end of file is reached
if (stringbuf[i] == EOF)
{
// add end of the string marking
stringbuf[i] = '\0';
strcpy (string, stringbuf);
return;
}
}
/* abschneiden falls value < string */
stringbuf[i-1] = '\0';
strcpy (string, stringbuf);
/* to get the new line */
charbuf = getchar ();
while (charbuf != '\n' && charbuf != EOF)
charbuf = getchar ();
return;
}
Vielen Dank.
Beste Grüße.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186070
Url: https://administrator.de/contentid/186070
Ausgedruckt am: 22.11.2024 um 08:11 Uhr