INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
File-Lese-Funktion mir Rückgabe wert ANSI C string: wie?
28.02.2015, 15:36 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2015 15:53 von HaWe.)
Beitrag #17
RE: File-Lese-Funktion mir Rückgabe wert ANSI C string: wie?
meine fgets-Funktion läuft jetzt (soweit beobachtet auch fehlerfrei),
Code:
char * fgets ( char * str, int32_t num, File * stream ) {
  int32_t i;
  i=0;
  strcpy(str, "");
  while ( stream->available() && (i<(num-1) )   ) {  
     str[i]=stream->read() ;
     if(str[i] >=  ' ')  ++i;
     else
     if(str[i] == '\0') goto ok; // end of string: \0
     else
     if(str[i] == '\n')   {      // end of string: CR
         //str[i] = '\0';        // optional: CR mit Null-Terminierung überschreiben
         str[++i] = '\0';        // zusätzliche Nullterminierung nach CR einfügen (== ANSI C)
         goto ok;
     }      
  }
  ok: return(str);
}

allerdings bekam ich von einem C-Fachmann noch eine Verbesserung gezeigt, die wohl wirklich wie das Original arbeitet:
Code:
//Try this instead (not tested, you should test it).

char * fgets ( char * str, int32_t num, File * stream ) {
  int32_t i = 0;
  
  while (i < (num - 1)) { // got room for newline and terminating null?
    int16_t ch = stream->read();
    if (ch < 0) // end of file
      break;
    str[i++] = ch;
    if ('\n' == ch) // end of line
      break;
  }
  
  if (i) { // room in buffer for terminating null
    str[i] = 0;
    return str;
  }
  else
    return NULL; // buffer too small or immediate end of file
}

// Peter Olson

share and enjoy! 8-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  String / HTTP Request Marc2014 2 70 08.12.2016 09:05
Letzter Beitrag: amithlon
  No such file Brother Tak 3 106 21.11.2016 10:24
Letzter Beitrag: Brother Tak
  String zusammensetzen Mathias 13 554 01.09.2016 21:15
Letzter Beitrag: Mathias
  String-Array füllen? torsten_156 9 452 08.07.2016 20:07
Letzter Beitrag: amithlon
  String in EEPROM Speichern BennIY 2 417 27.06.2016 10:23
Letzter Beitrag: BennIY
  Funktion mit Parameterübergabe - u8g torsten_156 8 403 22.06.2016 18:53
Letzter Beitrag: Pit
  String - Buchstabenposition auswerten scritch 5 666 01.04.2016 16:25
Letzter Beitrag: rkuehle
  Funktion in Loop einmalig ausführen Haustechno 4 646 09.03.2016 22:43
Letzter Beitrag: Haustechno
  String nach UTF16 konvertieren (UTF-16) ThoEngel 0 301 20.02.2016 19:22
Letzter Beitrag: ThoEngel
  HC-05 Modul auf Funktion prüfen. arduinofan 2 365 03.02.2016 19:18
Letzter Beitrag: arduinofan

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste