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

Ja, so habe ich das ja auch im letzten Schritt in etwa getan. Nun hat mein CHef aber gesagt, ich solle die Funktion 'fgetc' anwenden und nicht 'fgets'. Das ist mein Problem.

Bine

Geschrieben

Wie muss ich die Bedingung einer while Schleife schreiben, damit ich Zeichen aus der Datei mit 'fgetc' so lange einlesen kann, bis ein Leerzeichen kommt?

while (fgetc (fz)!= ??????? )

{

bla bla bla

}

Geschrieben

versuchs mal mit


int main()

{

   char buffer[250];

   int pos;

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

}

dann werden die zeichen auch gleich noch gespeichert.

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 :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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