Suchen des Zeichenkettenende



  • Hallo Leute,

    ich versuche in C eine Zeichenkette auszugeben.
    Diese enthält aber kein '\0', also kein "Enter".

    Ich habe in einem Buch mal gelesen, man könnte printf bis EOF laufen lassen.
    Leider kann ich mir dass nicht so ganz vorstellen und wenn ich nach EOF google,
    bekomme ich nur Seiten, die mir erklären, dass EOF vom Typ int ist und mittels STRG+Z o.ä. aktiviert wird....

    Ich wäre über jede Unterstützung dankbar,

    Mfg Jerome.



  • Ohne abschließende \0 wird das nix werden.
    Woher haste denn diese komische Zeichenkette?



  • Indem ich einzelne Zeichen aus einer Zeichenkette in die Zellen einzeln einsetze.
    Wäre es hilfreicher wenn ich künstlich das \0 einsetze?

    Kann ich mir das wie folgt vorstellen:

    matrix[a][b] = '\0'
    

    ??

    Vielen Dank für deine Anwort,

    LG Jerome!



  • Kann ich mir das wie folgt vorstellen:

    matrix[a][b] = '\0'
    

    kommt natürlich immer darauf an was du machen willst aber wenn dann eher so in der richtung

    matrix[a*x+b] = '\0'
    

    entweder du schreibst deine zeichenkette mit printf() auf die ausgabe oder du nimmst direkt den stdout welche als geöffnete datei "immer?" zur verfügung steht und nimmst dann sowas wie fwrite()

    char *str = "hello wo\nrld";
    fwrite(str,sizeof(char),9,stdout);
    printf("%.9s",str);
    printf("%.*s",9,str);
    

    '\0' ist das gleiche wie 0 und steht nicht für eine neue zeile sondern für das string ende, da alle strings in c null terminiert sind http://en.wikipedia.org/wiki/Sentinel_value

    '\n' ist eine neue zeile und wird bei einem enter erzeugt aber dafür ist, war nwp2 spezialist...

    lg lolo



  • EOF heißt soviel wie End Of File und ist meines Wissens nach -1. Das wird halt zurückgegeben, wenn du bei einem C-Filestream am Ende angelangt bist. Du kannst aber in einen String nicht einfach -1 reinschreiben, denn ((unsigned char) -1) == 255. Und wenn du nicht weißt, ob du dieses Zeichen irgendwann mal brauchst, nimmst du lieber 0.



  • Zum Zeilenumbruch: Unter Windows wird bei Editoren auch gerne \r\n genommen (ASCII glaube ich 8 und 9 oder so), das musst du dann beachten beim Binary-lesen-oder-nicht (binary werden beide Zeichen gelesen, Nicht-binary wird nur das \n gelesen, dann ist es einheitlicher)



  • Es muss nicht -1 sein. Kann auch irgendein anderes Zeichen sein, das nicht als ASCII Code vorkommen kann (IMHO).
    Daher immer nach EOF checken, nicht nach einem bestimmten Wert.



  • hey leute, es geht hier um ne zeichenkette, merkt mal was!



  • JeromeC schrieb:

    Indem ich einzelne Zeichen aus einer Zeichenkette in die Zellen einzeln einsetze.
    Wäre es hilfreicher wenn ich künstlich das \0 einsetze?

    Entweder du sorgst dafür, dass eine Null am Ende ist, oder du merkst dir die Länge irgendwo, und gibst nur so lange aus, bis die Länge überschritten wird.

    JeromeC schrieb:

    Kann ich mir das wie folgt vorstellen:

    matrix[a][b] = '\0'
    

    Hmm, woher hast du auf einmal ein 2D-Array? Hattest du nicht von einer Zeichenkette gesprochen? Darunter versteht man gewöhnlich ein 1D-Array.
    🙂


Anmelden zum Antworten