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

Printf question (newbie)

I want to print in a terminal the "%"character when I put

printf(" %c % ",var);

the % doesn't print

why??

Parents
  • "the % doesn't print

    why??"


    Because '%' flags the start of a conversion specification in the format string. Check your C books and manuals. They'll show you that for printf() to emit a '%', you must use "%%" in the format string, so your example should be:

    printf(" %c %% ",var);

Reply
  • "the % doesn't print

    why??"


    Because '%' flags the start of a conversion specification in the format string. Check your C books and manuals. They'll show you that for printf() to emit a '%', you must use "%%" in the format string, so your example should be:

    printf(" %c %% ",var);

Children
  • I test both of the senctence in TC

    printf("%c%%",'c');
    printf("%c\%",'c');
    
    the same result
    c%
    
    but they didn't work in Keil C
    In fact,I never used printf() in keil C.
    At the printf() sentence,it couldn't jump out,as TI never became 1.
    what's the reason?
    I watch the seria port
    Bauld 9600,8bit data

  • If you are getting "c%" from

    printf("%c\%",'c');
    as compiled by your compiler, don't count on the same results from all compilers. By using "\%", you are in an "undefined" area of the C language. From H&S:

    If the character following the backslash is neither an octal digit, the letter x, nor one of the character escape codes (i.e., n t b r f v \ ' " a ?), the result is undefined.

  • "At the printf() sentence,it couldn't jump out,as TI never became 1.
    what's the reason?"


    Purely a guess, since you have not shown your UART initialization code, but your UART is not initialized properly or you have not set the TI bit in initialization (as required by Keil's putchar routine, presuming that's what you are using).