sizeof von string hinter pointer?
-
spooky schrieb:
nee ihr habt mich falsch verstanden...
ich habe einen String, auf diesen lese ich mit scanf was ein. danach übergebe ich diesen als zeiger an eine funktion. in dieser soll geprüft werden ob die eingabe länger als der definierte string ist. wenn die eingabe länger war als 10 zeichen (string ist hier 10+1) dann muss die Eingabe wiederholt werden, sonst schiest der string ja im speicher drüber hinaus.
if(strlen(ptr_string) > sizeof(ptr_string)) ...
Dir ist schon klar, dass das Kind zu diesem Zeitpunkt längst in den Brunnen gefallen ist, oder?
-
und wie kann man es besser machen?
-
wenn du mit scanf() einen String einliest und der eingegebene String größer ist, als der Speicher, der zur Verfügung steht, "schießt" du schon beim einlesen darüber hinaus.
Du willst sicher fgets()
Greetz, Swordfish
-
Hallo
Da du im C++-Forum schreibst, solltest du einfach std::string benutzen.
chrische
-
yup, danke swordfish
-
chrische5 schrieb:
Da du im C++-Forum schreibst, solltest du einfach std::string benutzen.
Jo, schon, wenn er schon eine Frage hat, welche auf C-Strings abziehlt darf man ihm doch auch im C++-Forum helfen...
Greetz, Swordfish
-
Hallo
Swordfish schrieb:
chrische5 schrieb:
Da du im C++-Forum schreibst, solltest du einfach std::string benutzen.
Jo, schon, wenn er schon eine Frage hat, welche auf C-Strings abziehlt darf man ihm doch auch im C++-Forum helfen...
Greetz, Swordfish
Na klar. Ich habe erst seine Frage nich verstanden und habe aus seinem ersten Post nur herauslesen könne, dass er sich die Frage eigentlich selber beantwortet und dann wollte ich ihn darauf hinweisen, dass es bei c++ std::string gibt. Das sollte nur eine Information sein und nicht bedeuten, dass es sich mit seiner Frage ins c-forum verpissen soll, weil ihm hier keiner antwortet.
chrische
-
In C++ wollen wir:
#include <iostream> int main() { char str[ 10 ]; std::cout << "Namen eingeben: "; std::cin >> std::width( 10 ) >> str; };
-
Hallo
Und warum nicht einfach:
#include <iostream> #include <string> int main() { std::string Name; std::cout<<"Bitte Namen eingeben"<<std::endl; std::cin>>Name; }chrische
-
Dann ist die Eingabe aber nicht begrenzt und vllt. will er ja gar keine längere Eingabe oder es ist gar keine längere möglich. Da müsst man jetzt schon wissen was genau gewollt ist um zu wissen was besser ist.
-
Hallo
Ne so nicht! schrieb:
Dann ist die Eingabe aber nicht begrenzt und vllt. will er ja gar keine längere Eingabe oder es ist gar keine längere möglich. Da müsst man jetzt schon wissen was genau gewollt ist um zu wissen was besser ist.
Es wäre allerdings kein Problem die Eingabe nun auf Länge zu testen.
chrische