String in char array/datei suchen
-
Hi,
Ich habe eine Datei die in ein char array eingelesen wird.
Nun möchte ich gerne die Position eines bestimmten codes haben
(in meinem fall: ||342 ). norm sollte das ja mit strspn klappen.
der erste parameter ist der zeiger auf das dynamische char array. der zweite ein char zeiger auf den oben genannten code. aber ich kriege als rückgabe nur 0, obwohl der in dem array drin ist.Mfg. Matyr
-
Ich kann nur Vermutungen anstellen: Enthält die Datei vielleicht ein '\0' ?
-
nein datei enthält folgendes:
(stark gekürzt)111
111
111
||test
222
222
222
||342
333
333
56
6
-
hi,
zu einer echten Fehleranalyse gibst Du zuwenig Informationen (im Prinzip schreibst Du nur "ich habe alles richtig gemacht, warum funktioniert's trotzdem nicht ?"
).
Hast Du vielleicht ein zu kleines Array ? was sagt denn strlen ? Datei binär eingelesen oder im Textmodus ? Was passiert, wenn Du das mit std::string machst (dürfte kein großer Aufwand sein, das mal probeweise umzustellen) ? ...Gruß,
Simon2.
-
textweise eingelesen und ware ein großer auffwant da ich funktionen benutze denen ich einen char pointer ubergeben muss. string hilft mir da leider nicht viel.
wie wurdet ihr die entfernung vom anfang bestimmen?
-
Matyr schrieb:
...ware ein großer auffwant da ich funktionen benutze denen ich einen char pointer ubergeben muss. string hilft mir da leider nicht viel....
Dafür hat string c_str(). Und selbst, wenn Du ein veränderbares char-Array brauchst, ist eine char[]-Kopie problemlos:
string myString; // ... irgendwas { // Vorbereitung für char*-Call char* locChars = new char[myString.length()+1]; std::copy(myString.begin(), myString.end(), locChars); locChars[myString.length()] = '\0'; meine_Funktion_die_ein_charArray_braucht(locChars); myString = locChars; // Ergebnisse zurückkopieren delete[] locChars; // .. besser mit RAII oder try/catch exceptionsafe machen }Insgesamt habe ich aber den Eindruck, dass Du nicht wirklich an einer Lösung interessiert bist. Da würdest Du Dir vermutlich mehr Mühe geben, dass wir Dich verstehen (angefangen von der Rechtschreibung/Grammatik über die Beschreibung Deines Problems bis hin zur Bereitschaft, Dinge auszuprobieren).
Kleines Beispiel: "...wie wurdet ihr die entfernung vom anfang bestimmen?..."
Mögliche Antworten: "In Sekunden, Meter, Ticks, Worten, Gefühlsdiesel, Bytes, ....."
-> wo Du wolle ?Gruß,
Simon2.
-
sry aber bin in letzter zeit net ganz so gut drauf, habe einige probleme daher schwierigkeiten. Wollte die entfernung in anzahl der zeichen also byte haben.
werde das ganze mal mit string versuchen.
DankeMfg. Matyr
-
Also mit string funktioniert strspn genausowenig ich kriege immer 0 zurück.
Habe mir beides ausgeben lassen den char array und den string beides ist gefüllt, aber der findet das trozdem nicht.
Mfg. Matyr
-
Matyr schrieb:
Also mit string funktioniert strspn genausowenig ich kriege immer 0 zurück....
Natürlich nicht. Dafür ist strspn() ja auch nicht gemacht.
Aber für string gibt es sehr nette Funktionen, z.B. find, find_first_not_of, find_first_of, find_last_not_of, find_last_of.
Und außerdem arbeitet der prima mit den STL-Algorthmen zusammen, die einem auch viel Arbeit/Ärger ersparen können.
Und: String war nicht der einzige Vorschlag, den ich gemacht habe ...---------------------------------------------------------------
Bitte nicht böse sein, aber ich würde Dir tatsächlich raten, Dich erstmal Deinen "sonstigen Sorgen" zu widmen und das Programmieren solange zurückzustellen - in dem Stil wird das nichts.
Gruß,
Simon2.
-
Würde ich hier "ANSI C" Code posten, würd ich wieder einen auf den deckel bekommen

@OP: schau dir mal die std::fstream und std::string an.. wir sind im c++ forum^^