Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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++;

}

}


}



}


 

Geschrieben

du hast das do vergessen:

do {

bla bla bla;

} while (Bedingung);

du kannst dir auch noch n int array zusätzlich anlegen, in dem du dir merkst, wo in dem anderen array das nächste wort anfängt. dann kannst du die später auch wieder ausgeben.

Geschrieben

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

Vorsicht! Wenn ich mich nicht sehr taeusche, fehlen da Klammern. (Das Ergebnis der Abfrage wird in den Buffer geschrieben, nicht das gelesene Zeichen.)

Uli

Geschrieben

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>

Geschrieben

@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>

Geschrieben

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

Geschrieben

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von EisenUli:

<STRONG>

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

Uli</STRONG>

Geschrieben

Hey,

ich danke Euch allen erst einmal, war ganz schön viel zu lesen nach einem so langen Wochenende, und werde jetzt versuchen das, was ich hier bei Euch gelesen haben umzusetzen (ohne wirklich Eure Lösungen zu benutzen, denn ich will dabei ja auch was lernen).

Danke Bine :)

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...