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.
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.
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden