Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem bei getValue

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 <
000
19.05.2014, 09:50 Uhr
mikesch



Hallo Leute,

Ich habe ein kleines Problem:

ich habe schon lange nicht mehr C/C++ gemacht und wollte nun

memcpy(req->Variable, getValue("Variable", " "), sizeof(req->Variable));
anwenden.

die Variable enthält einen Text mit Spaces Beispiel "Heimatstadt = München" nach dem ausführen
erhalte ich bei der Ausgabe leider nur "Heimatstadt" der Rest fliegt weg. Kollege sagte, das ist halt so,
das nach dem ersten Space Schluss ist.

Kann mir jemand da weiterhelfen?

Gruß Mikesch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.05.2014, 21:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,

das kommt auf deine getValue-Funktion an. Zeig mal dessen Code. - Ich vermute jedoch, das die Funktion im zweiten Parameter den Wort-Trenner angibt (sonst würde das Leerzeichen da ja keinen Sinn ergeben) - evtl probier da doch mal "\n" reinzuschreiben, oder zeig uns mal den Code von getValue.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.05.2014, 10:32 Uhr
mikesch




C++:
char *
getValue(char *name, char *def = NULL)
{
  char *value = c->GetName(name);
  if(!value) {
    if(def != NULL)
    {
      std::cerr << "no entry for name[" << name << "]"
         << " return default[" << def  << "]"
         << std::endl;
      return def;
    } else {
      std::cerr << "no entry for name " << name << std::endl;
      exit(1);
    }
  }
  if(bTrace)
    std::cout << "name[" << name << "] value[" << value << "]" << std::endl;
  return value;
}



Hier der Code.

Grüße Mikesch

Dieser Post wurde am 22.05.2014 um 12:47 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.05.2014, 12:47 Uhr
mikesch



Hallo,

hab da noch ein kleines Problem:

übrgabe : "Meier " char 18


C++:
      memset(req->rnam,' ', sizeof(req->rnam));
      memcpy(req->rnam, getValue("rnam", "                    "), sizeof(req->rnam));


Ergebnis

Code:
<field id="10" value="Meier          Y      ***">



variable rnam Meier Y �


die 3 Sterne sind viereckige kastel, kanns leider hier nicht darstellen.

Weiß einer Rat?

Danke und Grüße

mikesch

Dieser Post wurde am 22.05.2014 um 12:47 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.05.2014, 13:26 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


zu ersterem:


C++:
c->GetName(name);



Was ist c und was macht GetName?

zu letzterem:

Du null-terminierst den String ja auch nicht.


C++:
memset(req->rnam,' ', sizeof(req->rnam));



sollte sinnvollerweise


C++:
memset(req->rnam,'\0', sizeof(req->rnam));



lauten, damit in der Variable nicht nur leerzeichen stehen, sondern "nullen", schließlich ist der string-terminator Null und nicht Leerzeichen. Da dein "rnam" dann nicht terminiert ist, gibt er halt einfach den Speicher weiter aus bis er eine Null findet, darum hast du dann so komische Zeichen auf der Konsole.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: