Klotzkopp Geschrieben 17. August 2008 Geschrieben 17. August 2008 Du hast doch strtok schon benutzt. Beim ersten Aufruf übergibst du line, für die nachfolgenden Aufrufe NULL als ersten Parameter. Zitieren
TDM Geschrieben 18. August 2008 Geschrieben 18. August 2008 Du hast doch strtok schon benutzt. Beim ersten Aufruf übergibst du line, für die nachfolgenden Aufrufe NULL als ersten Parameter. Generally, strtok() is not recommended. It works only on C-style strings. It modifies the string. It can't be used with constant strings or string literals. It has concurrency and reentrancey problems. bzw. Also, strtok has one really good use. It teaches newbies what not to do, by biting them in the ass. Get hold of a good description of strtok and read up on such things as: Buffer over runs as a substantial security risk. Static buffers shared between different calls to strtok as a data corruption risk. And so on. War mir zwar neu, aber man lernt halt nie aus. strncpy und sprintf schaffen Abhilfe: strncpy(new,alt+position,länge); sprintf(new,"%-10.10s,alt+position); Geschmacksfrage. Ansonsten mal Freund Google befragen, gibts massig Algorithmen. Zitieren
Klotzkopp Geschrieben 18. August 2008 Geschrieben 18. August 2008 Bei den Zitaten von bytes.com solltest du darauf hinweisen, dass es da um C++ geht. Darin stimme ich zu: In C++ sollte man strtok wirklich nicht benutzen. In C sehe ich das weniger kritisch. Man muss bei der Verwendung von strtok wissen, was man tut, aber das muss man in C sowieso allgemeiner als bei C++. It works only on C-style stringsRichtig. Was anderes haben wir in C auch nicht It modifies the string.Richtig. Muss man halt wissen. It can't be used with constant strings or string literals.Das folgert direkt aus dem vorigen Punkt. Ist hier nicht relevant. It has concurrency and reentrancey problems.Genauer gesagt, die Funktion ist weder reentrant noch threadsafe. Beides ist hier nicht von Bedeutung. Trotzdem muss man das natürlich wissen. strncpy ist übrigens auch nicht ohne. Diese Funktion setzt nämlich manchmal eine Nullterminierung, und manchmal nicht. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.