raphidue
Goto Top

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:
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;
}
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.

Content-ID: 186070

Url: https://administrator.de/contentid/186070

Ausgedruckt am: 22.11.2024 um 08:11 Uhr