Probleme mit scanf



  • und keine Magic Numbers wie 10. Da schreibt man '\n' und jeder weiß was gemeint ist.
    (auch bei anderen Zeichensätzen)



  • nur daß '\n' je nach Plattform 10, 13 oder 13 10 sein kann.



  • versionsnummer schrieb:

    nur daß '\n' je nach Plattform 10, 13 oder 13 10 sein kann.

    So mag es in einer Datei aussehen.
    Bei Ein-/Ausgabe, die nicht im binary-Mode arbeitet, wird das durch '\n' beschrieben.



  • echo -e "#include \"stdio.h\"\nint main(){ printf(\"hallo\\\\n\");}" | wine gcc -o t_e_s_t.exe -xc - && wine ./t_e_s_t.exe | hexdump -C
    

    68 61 6c 6c 6f 0d 0a

    echo -e "#include \"stdio.h\"\nint main(){ printf(\"hallo\\\\n\");}" | gcc -o t_e_s_t -xc - && ./t_e_s_t | hexdump -C
    

    68 61 6c 6c 6f 0a



  • Imlerith schrieb:

    Eine zusätzliche Funktion ist zwar gut, aber ist für mich zuviel Overhead.

    Depp.



  • manchmal reicht in der tat ein "\n" und manchmal muss es "\r\n" sein. aber "newline" ist doch genormt, oder irre ich da?



  • versionsnummer schrieb:

    echo -e "#include \"stdio.h\"\nint main(){ printf(\"hallo\\\\n\");}" | wine gcc -o t_e_s_t.exe -xc - && wine ./t_e_s_t.exe | hexdump -C
    

    68 61 6c 6c 6f 0d 0a

    echo -e "#include \"stdio.h\"\nint main(){ printf(\"hallo\\\\n\");}" | gcc -o t_e_s_t -xc - && ./t_e_s_t | hexdump -C
    

    68 61 6c 6c 6f 0a

    Unsinn.
    Du weißt nicht, was für eine Unwissenheit du hier verbreitest.
    Wie immer heißt es hier: Klappe halten, wenn man keine Ahnung hat.

    DirkB hat völlig recht, == 10 ist immer falsch, == '\n' ist immer richtig, da die Lineendconvention implementierungsabhängig (hier auch plattformabhängig) ist; bei zeichenorientierten Streams (stdin,stderr,stdout+fopen(..."r") kapselt der Compiler die Binärausprägung der konkreten Lineendconvention automatisch bei der Verwendung von '\n', im Gegensatz zu dir immer und in jedem Fall richtig.



  • LOL



  • verionsnummer schrieb:

    LOL

    Genau. Lache nur ruhig über dich selber, halte die Klappe und verziehe dich dorthin wo du herkamst.



  • Der Test von versionsnummer bestätigt doch nur das Geschriebene bezüglich \n

    Im Code steht \n. In der Ausgabe steht die Zeilenendekennung vom Betriebssystem.


Anmelden zum Antworten