C Bestimmtes Zeichen in einem String zählen

asdfman schrieb:
Das kann man nicht grundsätzlich so sagen.
Eine Sprache ist ein Mittel zum Zweck und entsprechend sollte man sie auswählen.
Nicht umsonst ist C so weit verbreitet. Wenn C++ immer besser wäre, würde C ja
keiner benutzen oder?

€: Hier wahllos was gegoogelt und in der Statistik liegen C und C++ quasi gleichauf:
http://wismuth.com/lang/languages.html


So wie ich das sehe, muß man in C++ - insofern man einen modernern Compiler hat und Libraries wie boost verwenden kann - zum selben Zweck häufig deulich weniger Aufwand betreiben als in C und hat sogar einige Möglichkeiten, die in C schlicht und ergreifend nicht zu bewerkstelligen sind. Natürlich gibt es Gründe, die jemanden veranlassen würden, trotzdem C den Vorzug zu geben:

  • Er ist in C++ nicht so firm und fühlt sich in C sicherer.
  • Er entwickelt für eine Platform, für die es keinen gescheiten C++ Compiler gibt, oder er verwendet irgendwelche Libraries, die aus welchem Grund auch immer mit C++ nicht so toll funktionieren.
  • Er kann C++ einfach nicht leiden. So was soll's ja geben. ;)
  • Er hat mal irgend wo gehört, daß C++ saulahm und ineffizient ist. Ist zwar Käse, aber trotzdem ein weit verbreiteter Irrglaube.

Schreibt man irgend welche Treibergeschichten oder ähnliche low-level-Sachen, dann hat man manchmal gar keine Wahl, aber für normale Desktop-Anwendungen fallen mir persönlich keine überzeugenden Vorteile ein, die C im Vergleich zu C++ bieten würde.

Um mal wieder zum eigentlichen Thema zurückzukommen, der OP hat sich ja selbst dahingehend geäußert, daß er glaubt, mit C++ besser bedient zu sein als mit C. Welchen Grund sollte es da für ihn geben, trotzdem bei C zu bleiben?
 
Keine Ahnung. Nachdem er meinte, sein Projekt wäre so neu, dass er ruhig umschwenken kann, fand ich,
das sei ja dann kein Problem. Dachte zuerst, dass der Sprachwechsel einen größeren Aufwand mit sich bringen
würde. Das ist ja offensichtlich nicht so.

Sein Grund für den Wechsel leuchtet mir zwar nicht recht ein, aber das spielt ja keine Rolle, weil es seine
Entscheidung ist und die wird er sich wohl vorher überlegt haben.

Er kann C++ einfach nicht leiden. So was soll's ja geben.
HIER! *Meld* :D
 
antred schrieb:
Der Konsistenz wegen sollte dein 'size'-Parameter auch vom Typ unsigned int sein. :) Noch besser wäre für Parameter und Rückgabewert size_t.

Noch besser als die Länge wäre ein const char* end. Kommt man tatsächlich mal in die Verlegenheit, dass man mehr als 4GB abgrasen will und unsigned char oder size_t auf einer 64-Bit-Möhre nur 32 Bit haben... ;) (kann spuren von Nüssen und Ironie enthalten) Ist auf jeden Fall prima mit C++-Algorithmen kompatibel, da man so einen Start- und End-Iterator hat.
 
Guter Einwand. Ich war mir ehrlich gesagt dieser Einschränkung seitens size_t gar nicht bewußt. Ich meine, ich hätte mal irgend wo gelesen, daß size_t immer so breit wäre wie ein Pointer. Hab's aber eben noch mal nachgelesen, und du scheinst völlig Recht haben.

Ah, da habe ich wohl an ptrdiff_t gedacht.
 
Zuletzt bearbeitet:
antred schrieb:
Guter Einwand. Ich war mir ehrlich gesagt dieser Einschränkung seitens size_t gar nicht bewußt. Ich meine, ich hätte mal irgend wo gelesen, daß size_t immer so breit wäre wie ein Pointer. Hab's aber eben noch mal nachgelesen, und du scheinst völlig Recht haben.

Ah, da habe ich wohl an ptrdiff_t gedacht.

In aller Regel ist das ja auch so. Deshalb auch die leichte Ironie, das war nicht wirklich ernst gemeint. :) Trotzdem bevorzuge ich, vielleicht auch weil eher aus der C++ Ecke komme und Iteratoren bevorzuge, die 2-Pointer-Variante.
 
Zurück
Oben