This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

scanf receives 0x0A instead of 0x0D

Hello to everyone,
some incredibile detail about scanf (CARM)

    unsigned char my_key;
    my_key=0;
    scanf("%c",&my_key);


When the PC sends a chr$(13) = CR the microcontroller receives a 0x0A = LF.
I had my PC under suspicion to attach an additional LF.
But now i'am using the int14h and controlled with an oszilloscope, there is no additional LF. So how to correct the scanf?

Parents
  • Andy told you to check _getkey() because scanf() calls _getkey() at the low level. Probably your _getkey() is translating CR to LF on-the-fly.

    But, as already mentioned, why use scanf() at all?

    If you are getting an ascii representation of a floating point value, it is relatively simple to transform the ascii stream into a float. For example, you can parse each char and add it to the current value of the conversion, previously multiplied by 10.

Reply
  • Andy told you to check _getkey() because scanf() calls _getkey() at the low level. Probably your _getkey() is translating CR to LF on-the-fly.

    But, as already mentioned, why use scanf() at all?

    If you are getting an ascii representation of a floating point value, it is relatively simple to transform the ascii stream into a float. For example, you can parse each char and add it to the current value of the conversion, previously multiplied by 10.

Children