Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char array größe herrausfinden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
22.11.2005, 17:57 Uhr
~Hilflos
Gast


Hi,

ich habe einen buffer vom Typ char *. Leider weiß ich nicht die größe. Wie kann ich diese bekommen bzw. das array durchpasen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.11.2005, 18:01 Uhr
Spacelord
Hoffnungsloser Fall


Schau dir mal strlen an.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.11.2005, 18:04 Uhr
~Hilflos
Gast


Da bekomme ich nen 0 zurück! Ich denke mal das array ist nicht terminiert! Was kann man da tun?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.11.2005, 18:12 Uhr
Spacelord
Hoffnungsloser Fall


Zeig mal etwas Code.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.11.2005, 18:13 Uhr
~Hilflos
Gast



C++:
    char *buf;
    unsigned long count;
    TIFFGetField(tif, TIFFTAG_RICHTIFFIPTC, &count, &buf);
    buf[6]='\n';
    int ll = strlen(buf);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.11.2005, 18:15 Uhr
Gap



strlen muss eigentlich funktionieren, da stimmt warscheinlich was anderes nicht.

Mir fallen spontan nur 2 Möglichkeiten ein:

1. std::string

2. sizeof( it ) / sizeof( char )

Wobei diese Methode Zeichen, die einen backslash benutzen, doppelt zählt ( z.B. '\n' )

Dieser Post wurde am 22.11.2005 um 18:16 Uhr von Gap editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.11.2005, 18:18 Uhr
Spacelord
Hoffnungsloser Fall


Naja,du solltest für buf auch Speicher bereitstellen bevor du da irgendwas reinschreiben lassen kannst.

Was verlangt denn die Doku von TIFFGetField als letzten Parameter?
Wohl kaum einen Zeiger auf einen Zeiger auf char,oder?
Das ist es nämlich was du übergibst.
Ein Wunder dass das Ganze nicht in ner Access Violation endet.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.11.2005, 18:28 Uhr
~Hilflos
Gast


Doch laut docu genau das! Ausserdem wie soll ich vorher speicherbereitstellen wenn ich die Größe nicht kenn? Wäre doch schwachsinnig oder? Doppelzeiger hat mich auch gewunder aber hat bisher wunderbar geklappt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.11.2005, 18:30 Uhr
Spacelord
Hoffnungsloser Fall


Dann musst du aber auch anschliessend den Speicher,den die Funktion offensichtlich anfordert ,wieder freigeben.
Poste doch mal die Dokumentation der Funktion.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.11.2005, 18:37 Uhr
~Hilflos
Gast


Ja das ist ja auch kein Problem! Also die function funtzt so:

TIFFGetField(tif, TIFFTAG_RICHTIFFIPTC, &count, &buf);

tif = das geöffnete TIF
TIFFTAG_RICHTIFFIPTC = der Tag den man haben will
count = ein zeiger auf ein int in den die Größer von buffer geschrieben wird also int * count
buf = **char

Soweit ich weiß wird der speicher beim schließen des Bildes wieder freigegeben. Ist mir aber eigentlich momentan egal. Das problem ist das der count den ich bekomme mit 4 multipliziert werden muß damit ich die Tatsächliche größe habe! Ist der Buffer nun aber 6 bytes groß bekomme ich von der lib als count = 2 * 4 = 8. Gib eigentlich keine Probleme, wenn ich jetz aber die bytes drehen möchte von BigEndian zu LittleEndian dann gibs Probleme weil ich 2 byte mehr habe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: