Zurück   RR:Board > Computer > Programmierung & Entwicklung

Entwicklung und Coding in verschiedenen Programmiersprachen: Assembly, C++, C#, Perl, Delphi, .NET, Visual Basic...
Antwort
 
Themen-Optionen Thema durchsuchen

[C/C++] - C - gets, fgets, getline, fread? zeilenweise einlesen.
Alt 20.05.2012, 14:17   # 1
Mazen2004
Underground King
blau
Bewertung:
Mazen2004 hat die Renommee-Anzeige deaktiviert
Registriert seit: Jan 2005
Beiträge: 2.096
Power: 31
heyho,

ich versuche an den datenbereich eines pgm files zu kommen.

pgm file beschreibung: http://de.wikipedia.org/wiki/Portabl....C3.A4r-Format

Ich hab ja davor diese ganze Beschreibung und Kommentar Zeilen.
Da ich nicht weiß wie viele Kommentarzeilen es gibt, kann ich nicht einfach auf eine bestimmte line springen.

Einlesen würde ich mit gets oder fgets oder getline von gnu. Was eignet sich am Besten? (http://openbook.galileocomputing.de/...3388f2266093e5)

Erstmal fange ich erst ab zeile 2 an, weil in zeile 1 nur P5 steht.
Ich müsste dann ja irgendwie auf Kommentarzeilen checken also auf # am Anfang der Zeile. Wenn das nicht der Fall ist kommen noch 2 Zeilen bis zum Datenbereich...

Und wie frage ich sowas in C ab xD? Gibts da so etwas wie regex?



EDIT

Ok ich habe eine Lösung gefunden xD.... jetzt komme ich aber mit gets, fgets und getline nich zurecht... was benutze ich am Besten und wie wird es benutzt :/ das galileo buch bringt mich nich wirklich weiter -.-"

gets soll man nicht benutzen. Weils zu nem bufferoverflow führen kann.
fgets muss man die zeichenlänge angeben? Welche Zeichenlänge? Von der Zeile? Weiß ich doch aber gar nicht wie lange eine Zeile ist?
und was ist mit getline?
Und was macht fread? oO

4rr

Keine Macht der Renommee-Geilheit! Turn Off your Reno-Anzeige!

Geändert von Mazen2004 (20.05.2012 um 14:43 Uhr).
  Mazen2004 ist offline   Mit Zitat antworten

Alt 20.05.2012, 14:37   # 2
Chillikid
Kabel Wurm
rot rot rot 
Bewertung:
Chillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 PunkteChillikid hat mehr als 5000 Punkte
Chillikid hat mehr als 5000 Punkte
Registriert seit: Feb 2008
Internet: DSL 4000
Beiträge: 952
Power: 18
Hast du dir mal die verlinkten Seiten angesehen?

http://netpbm.sourceforge.net/doc/pgm.html
http://netpbm.sourceforge.net/doc/libnetpbm.html

Vielleicht reicht dir die Funktionalität der Library ja schon?
  Chillikid ist offline   Mit Zitat antworten

AW: C - gets, fgets, getline, fread? zeilenweise einlesen.
Alt 21.05.2012, 14:21   # 3
blackworker
Da geht noch einer!
rot rot 
Bewertung:
blackworker hat 400 bis 499 Punkteblackworker hat 400 bis 499 Punkteblackworker hat 400 bis 499 Punkteblackworker hat 400 bis 499 Punkteblackworker hat 400 bis 499 Punkte
Registriert seit: Nov 2004
Beiträge: 410
Power: 23
Bei fgets gibst du an wieviel Zeichen maximal eingelesen werden dürfen, quasi als Schutz dass du aus deinem Char-Array nicht herauskommst.

Hattest du schon überladene Operatoren?

http://img237.imageshack.us/img237/3622/wallsofjerichosigpm0.jpg
  blackworker ist offline   Mit Zitat antworten

AW: C - gets, fgets, getline, fread? zeilenweise einlesen.
Alt 22.05.2012, 07:13   # 4
razor90
user nr. 1000
vip
Bewertung:
razor90 hat die Renommee-Anzeige deaktiviert
Registriert seit: Dec 2004
Beiträge: 2.623
Power: 34
So wie ich es verstehe, willst du das Binärformat lesen, oder? Da gibt's kein Konzept von "Zeilen".

Wenn du es Quick&Dirty willst: fscanf() mit "P5 %d %d %d". Das liest dir den Header ein, skippt alle Whitespaces dazwischen und setzt den Filepointer direkt an den Whitespace vor den Daten. Dann kannst du ein Array anlegen, das groß genug ist die Daten zu halten, und liest alles auf einmal mit fread() (fgets() ist nicht für Binärdaten gedacht) ein.

- hier war mal eine Signatur
  razor90 ist offline   Mit Zitat antworten

AW: C - gets, fgets, getline, fread? zeilenweise einlesen.
Alt 22.05.2012, 16:58   # 5
allstar
Master of supply
rot rot rot rot 
Bewertung:
allstar hat 50 bis 99 Punkteallstar hat 50 bis 99 Punkte
Registriert seit: Jan 2006
Internet: DSL 6000
Beiträge: 1.579
Power: 25
ich würde fgets nehmen. mit fgets kannst du entweder angeben wie viele chars du auf einmal einlesen willst oder er liest einfahc solange bis es zum zeilenumbruch kommt.

einfach ne while schleife nehmen und zeile für zeile einlesen. die eingelesenen zeilen müssen aber noch gecastet werden weil du nur eine zeichenfolge auslesen kannst.



mfg allstar
  allstar ist offline   Mit Zitat antworten
Antwort

RR:Board > Computer > Programmierung & Entwicklung > [C/C++] - C - gets, fgets, getline, fread? zeilenweise einlesen.


Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[C/C++] - [QT] TextEdit Zeilenweise ausgeben Joker47 Programmierung & Entwicklung 4 18.06.2010 15:40
[C/C++] - mit getline() erzeugten String zerlegen Leon Programmierung & Entwicklung 7 10.10.2009 00:36
[C/C++] - Alternative zu getline? Leon Programmierung & Entwicklung 5 10.05.2009 13:12
[Suche] - Freehoster mit fsockopen() fgets() set_time_limit() Unterstützung hiNt Webhosting 2 11.10.2008 19:23
[VisualBasic] - Text zeilenweise einlesen und bearbeiten Radiergimmy Programmierung & Entwicklung 15 09.08.2008 13:00



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
vBulletin Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.