xyz_s Funktionen auch für ANSI C ?



  • truthbesaid schrieb:

    sachen, die sich microsoft ausgedacht hat, werden von den leuten, die solche standards machen, generell abgelehnt, deshalb gibt es solche funktionen nicht.

    würde ich auch tun. m$ ist böse.
    🙂



  • Vor allem scheint Microsoft nicht mal vorzuhaben, jemals den aktuellen Standard zu unterstützen. Warum sollten die Leute, die für den Standard zuständig sind, also dem, was Microsoft sich so ausdenkt, irgendeine Beachtung schenken?

    Für was sollen diese Funktionen denn überhaupt gut sein?



  • namespace invader schrieb:

    Für was sollen diese Funktionen denn überhaupt gut sein?

    falls du die ms-funktionen meinst, da stehts: http://msdn.microsoft.com/en-us/library/8ef0s5kh(VS.80).aspx
    🙂



  • Weil sie dem allgemeingut dienen, MS unternimmt permanent durchaus gute und zahlreiche Schritte zur Verbesserung des Standards. Diese einfach aus dem Grund abzulehnen, weil sie von MS kommen, ist kindisch, aber anderes Verhalten ist man von Leuten, die ihren Bart als Kleidungsersatz benutzen, ja auch nicht gewohnt.



  • namespace invader schrieb:

    Warum sollten die Leute, die für den Standard zuständig sind

    Das ist ein offener Standard, da kann jeder mitmischen. Auch MS hat da seine Leute mit drin sitzen.



  • truthbetold schrieb:

    Weil sie dem allgemeingut dienen, MS unternimmt permanent durchaus gute und zahlreiche Schritte zur Verbesserung des Standards.

    nicht für's allgemeingut, sondern um ms die taschen zu füllen. ms hat in der vergangenheit öfter versucht, bestehende standards und quasi-standards zu untergraben bzw. ihnen ihren stempel aufzudrücken. daher ist es nur verständlich, dass man allem gegenüber, was von ms kommt, misstrauisch ist.

    truthbetold schrieb:

    Diese einfach aus dem Grund abzulehnen, weil sie von MS kommen, ist kindisch...

    nö, normal. ms hat in der hinsicht jedes vertrauen verspielt.
    🙂



  • _matze schrieb:

    /rant/ schrieb:

    ms doof`? schrieb:

    sind die safe-funcs denn so doof?

    Diese Funktionen entsprechen nicht dem Standard. Ob sie doof sind oder nicht, ist nicht von Bedeutung.

    Die Antwort ist für die Frage nicht von Bedeutung... 🙄

    Ach nicht? Die ursprüngliche Frage lautete doch, ob es diese Funktionen im C-Standard gibt. Meine Antwort lautet offensichtlich nein; was wäre denn deiner Meinung nach die richtige Antwort? Falls ich falsch liege, lasse ich mich gerne korrigieren... 🙄



  • Die Frage (wenn auch... ähm... simpel gestrickt 😉 ) zielte doch darauf ab, ob die MS-Funktionen "doof" sind - also vielleicht irgendwelche Fehler oder Fallstricke aufweisen, die einen Einzug im Standard unmöglich machen würden -, oder ob sie ansich vernünftig sind und gut funktionieren. Und für diese Frage hatte deine Antwort nur wenig Relevanz, sag ich mal. Denn unabhängig vom Eröffnungs-Posting kann man eine solche Frage doch ruhig stellen. Klar? 🙂



  • truthbetold schrieb:

    Weil sie dem allgemeingut dienen, MS unternimmt permanent durchaus gute und zahlreiche Schritte zur Verbesserung des Standards.

    ach so ja stimmt, OOXML ist ja eine Bereicherung für die Welt der Standards, vor allem, weil alles so konform und ohne Schmiergelder rüberkam.

    Diese einfach aus dem Grund abzulehnen, weil sie von MS kommen, ist kindisch, aber anderes Verhalten ist man von Leuten, die ihren Bart als Kleidungsersatz benutzen, ja auch nicht gewohnt.

    vielleicht bin ich so doof, aber welcher Unterschied gibt es zwischen strcpy_s und strncpy? Was ist denn also da die große Bereicherung des bereits bestehenden Standards?



  • _matze schrieb:

    Die Frage (wenn auch... ähm... simpel gestrickt 😉 ) zielte doch darauf ab, ob die MS-Funktionen "doof" sind - also vielleicht irgendwelche Fehler oder Fallstricke aufweisen, die einen Einzug im Standard unmöglich machen würden -, oder ob sie ansich vernünftig sind und gut funktionieren. Und für diese Frage hatte deine Antwort nur wenig Relevanz, sag ich mal. Denn unabhängig vom Eröffnungs-Posting kann man eine solche Frage doch ruhig stellen. Klar? 🙂

    Nun, ich bin mir bewusst, dass diese Diskussion hier ebenfalls nicht relevant ist, doch wenn ich ein Zitat eines Users "ms doof`?" anführe, so habe ich jeweils meine Zweifel, wie ernst es gemeint ist. Vielmehr habe ich den Eindruck, dass es sich hierbei mehr um reine Provokation handelt. Schliesslich setzt die Fragestellung, ob denn etwas "so doof" ist, voraus, dass im Threadverlauf bereits eine Aussage bezüglich der Doofheit derartiger Funktionen gemacht wurde, was ich aber leider nicht sehe. Oder vielleicht will der Verfasser auch nur, dass man genau über solche überflüssigen Dinge diskutiert. Lassen wir das also und konzentrieren wir uns wieder aufs eigentlich Thema 😉

    supertux schrieb:

    vielleicht bin ich so doof, aber welcher Unterschied gibt es zwischen strcpy_s und strncpy? Was ist denn also da die große Bereicherung des bereits bestehenden Standards?

    Ich sehe den grossartigen Unterschied auch nicht. Der einzige Unterschied scheint der Rückgabewert der Funktion zu sein.

    MSDN über strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy & _mbsncpy_l schrieb:

    "No return value is reserved to indicate an error."

    Mit den _s Varianten gibt es definierte Rückgabewerte für Fehler...

    MfG 🙂



  • /rant/ schrieb:

    doch wenn ich ein Zitat eines Users "ms doof`?" anführe, so habe ich jeweils meine Zweifel, wie ernst es gemeint ist.

    Ja, kann schon sein. Ist ja auch egal, wir haben beide Recht und fertig! 😃



  • /rant/ schrieb:

    MSDN über strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy & _mbsncpy_l schrieb:

    "No return value is reserved to indicate an error."

    Mit den _s Varianten gibt es definierte Rückgabewerte für Fehler...

    mag sein, auch die glib setzt errno den meisten Fehlern entsprechend. Aber in 99% der Fälle wirst du damit nix anfangen können.



  • _matze schrieb:

    /rant/ schrieb:

    doch wenn ich ein Zitat eines Users "ms doof`?" anführe, so habe ich jeweils meine Zweifel, wie ernst es gemeint ist.

    Ja, kann schon sein. Ist ja auch egal, wir haben beide Recht und fertig! 😃

    😃

    supertux schrieb:

    /rant/ schrieb:

    MSDN über strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy & _mbsncpy_l schrieb:

    "No return value is reserved to indicate an error."

    Mit den _s Varianten gibt es definierte Rückgabewerte für Fehler...

    mag sein, auch die glib setzt errno den meisten Fehlern entsprechend. Aber in 99% der Fälle wirst du damit nix anfangen können.

    Richtig. Vor allem sind die Fehler, welche damit "behandelt" werden, von der Kategorie, welche in sauberen Programmen nicht vorkommen sollten. Was macht man, wenn ein solcher Fehler gefunden wird? Man hat keine andere Wahl, als ihn so zu beheben, dass man danach auch die normalen Funktionen benutzen könnte 😕

    MfG



  • Bin weder C- noch Standard- Freund, aber dank beider haben die Worte "Redesign" und "Abkündigung" (von Controllerfamilien) ihren Schrecken verloren, ich kann auf Source- Ebene mit vertretbarem Aufwand zwischen Plattformen migrieren und skalieren.

    Microsoft hat von je her versucht, jeden marktrelevanten Standard mit Extensions zu korrumpieren, um ihn an die eigene Plattform zu binden. Java und der tuckige J#- Klon samt fettem .NET- Unterbau sind typische Beispiele dafür. Sogar HTML wurde einer Zwangsmassage unterzogen, die man akzeptiert hat, weil der IE6/7 zeitweilig über 90% Marktanteil hatte. Ziemlich frisch: Die MS- Office- Formate als allgemeiner Standard - wie ist das passiert? Glücklicherweise interessiert sich MS nicht mehr für C. 🙂

    Die Situation besteht so seit fast 30 Jahren und war eher entwicklungshindernd, deswegen haben Vorbehalte gegen eine "Aufbesserung" der Standards ebenfalls schon "Historie", von "MS- Zeugs" kategorisch die Finger zu lassen, schon fast Lifestyle- Status. 😃



  • Die BSD Leute haben ja noch die l-Varianten. Die glibc Leute wollten sich weder auf irgend was bisher festlegen und da ein neuer C Standard irgend wo noch in den Sternen steht, würde ich mir da erst einmal keine großen Hoffnungen machen.

    Tim schrieb:

    man: strncpy, man: strncat, ...

    👎 strncpy ist zB fundamental kaputt.



  • rüdiger schrieb:

    👎 strncpy ist zB fundamental kaputt.

    Aha, Begründung?



  • char str[10];
    strncpy (str, "Ein klein wenig zu lang...", sizeof str); // <- str ist nicht terminiert
    

    @ ruediger: Stringhandling in C war nie wirklich schön. Fundamental kaputt ist aber trotzdem übertrieben, das Attribut gehört gets() ganz alleine 😉

    PS: Und wer in C sicher mit Strings hantieren will, baut sich halt seine eigene Stringklas^^^^funktionen.



  • Tim schrieb:

    @ ruediger: Stringhandling in C war nie wirklich schön. Fundamental kaputt ist aber trotzdem übertrieben, das Attribut gehört gets() ganz alleine 😉

    Ne, Du kannst mit fast allen Stringfunktionen ein Konstrukt (um ein Byte verzählt, upps) zerknallen, gets() macht das nur offensichtlicher. Wenn Du uralte DDCJs durchwühlst, besteht der Grundvorwurf darin, Strings nicht als Basistyp integriert zu haben, andere feiern das als Heldentat

    Tim schrieb:

    PS: Und wer in C sicher mit Strings hantieren will, baut sich halt seine eigene Stringklas^^^^funktionen.

    Genau dafür brauche ich eigentlich keine "standardisierte", "sourceportable" Sprache, wenn dann doch alles wieder an mir hängenbleibt. 😞



  • _matze schrieb:

    rüdiger schrieb:

    👎 strncpy ist zB fundamental kaputt.

    Aha, Begründung?

    weil du selber haendisch jedesmal den string terminaten musst. ziemlicher schwachsinn. und das padding mit 0 ist auch sehr daemlich.

    dann hast du ploetzlich code wie

    strncpy(trg, src, n);
    if(trg[n-1]!=0) {
      //buffer zu klein
    }
    trg[n-1]=0;
    

    aber der preis geht natuerlich an gets() fuer die duemmste funktion ever 😉
    generell finde ich das string handling in c aber nicht wirklich schlimm. es hat seine vorteile.

    wirklich schlimm war dagegen das fehlen eines snprintf...

    @pointercrash:
    es ist schon ein kleiner unterschied ob ich garantiert einen buffer overflow habe (gets) oder selber einen fehler machen muss um einen zu bekommen (strncpy).


Anmelden zum Antworten