Zum Inhalt springen

Probleme mit fgetc


Woodstock

Empfohlene Beiträge

Hey, ich bins mal wieder.

Also, ich habe jetzt versucht etwas aus einer Datei, die geöffnet habe (Ihr wisst schon, mit fopen), mit fgetc herauszulesen. Nun habe ich das Problem, das er mir dabei ja einen int Wert zurückliefert. Ich möchte aber ja das gelesene (bis zu einem Leerzeichen, wo ich auch noch nicht weiß wie ich das machen soll), als String in einem char Array speichern, um es dann später noch weiter zu untersuchen. Wie kann ich die Konvertierung machen?

Bine

Link zu diesem Kommentar
Auf anderen Seiten teilen

versuchs mal damit:


int main ()

{

   char* buffer = new char[MAX_SIZE];

   int pos = 0;

   // ... datei öffnen ...

   do

   {

      buffer[i] = fgetc(/*Parameter*/);

   } while (buffer[i++] != '\n');

   // ...

   delete buffer;

}

ich hoffe das das hilft und nicht so viele fehler enthält. bei fgetc muß du noch die parameter entsprechend einfügen. die kenne ich nicht.

ps: ich hoffe du wolltest keine C- Code.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also, wenn ich dich richtig verstanden hab, möchtest du immer einen sting bis zu einem leerzeichen einlesen, und die einzelnen zeichen des strings in einem array ablegen.

ich würd das so machen:

 


#include blabla

// max zeilenlänge

#define MAXCHARS 2500


void main() {

FILE *InFile;

char Zeile[MAXCHARS];

int i,k;

int wortnummer;

int zeichen;

int zeilenlaenge;

// 500: maximale wort anzahl

//  50: maximale wort länge

char words[500][50];


InFile = fopen("meineDatei.txt","r");


wortnummer=0;

//liest bis dateiende erreicht immer eine zeile ein 

//und speichert sie in "Zeile" ab

while ((fgets(Zeile,MAXCHARS-1,InFile)!=0) {

zeilennummer++;

zeilenlaenge = strlen(Zeile);

zeichen=0;

for (i=0;i<zeilenlaenge;i++) {


if (Zeile[i]!= " ") {

strcpy(words[wortnummer][zeichen],Zeile[i]);

zeichen++;

} else {

zeichen=0;

wortnummer++;

}

}


}



}


 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nur als Anmerkung: Solltest Du CStrings haben, kannst Du über GetBuffer() einen Pointer auf den Inhalt bekommen und mit GetBufferSetLength() die Länge des gewünschten Char-Arrays bestimmen: Achtung!!! Es kann u.U. sein, daß man noch das 0-er Bytes ans Ende ranhängen muß (auf jeden Fall wenn GetBufferSetLength den String nach unten begrenzt)

<FONT COLOR="#a62a2a" SIZE="1">[ 05. Oktober 2001 11:04: Beitrag 1 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

@uli:

stimmt die klammern fehlen. habe ich wohl vergessen. vergleiche kommen vor zuweisungen. kann ja mal passieren

@poldi:

dir kann ich aber nicht zustimmen das do habe ich nicht vergessen.

richtig müsste es dann heisen


int main()

{

   char buffer[255];

   int pos = 0;

   while ((buffer[pos++] = fgetc(fz)) != ' ');

}

ps: zählt sowas eigentlich schon zum guten und von allen geliebten spagethicode ???

<FONT COLOR="#a62a2a" SIZE="1">[ 05. Oktober 2001 11:12: Beitrag 1 mal editiert, zuletzt von maddin ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kein Problem, maddin, ich bin da auch schon drauf reingefallen... ;)

In C gilt es nicht als Spaghetticode, zumal es sehr praktisch, kurz, uebersichtlich und syntaxregelkonform ist. K&R bringen es ja auch in ihrem Standardwerk.

Den Freaks von der Pascalaesthetikerfront faellt natuerlich jedesmal der Kitt aus den Zaehnen, wenn die sowas sehen. :D

Uli

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...