FIX: printf Does Not Recognize "\n\r" when Using Conversion

ID: Q117385


The information in this article applies to:
  • The C Run-Time (CRT), included with:
    • Microsoft Visual C++ for Windows, versions 1.0, 1.5
    • Microsoft Visual C++ 32-bit Edition, version 1.0


SYMPTOMS

If an explicit type-conversion syntax is used for the return value of printf(), printf() does not recognize the escape sequence \n\r in its format string.

The following macro prints "<string x>\n\r":


   #define PRINT(x) void( printf("%s\n\r", x ) ) 


RESOLUTION

To correct the error, use one of the following workarounds:

  1. Use ASCII values for the line feed and carriage return. For example:
    
          #define PRINT(x)  void( printf("%s%c%c",x,10,13 ) ) 


  2. -or-

  3. Use explicit typecasting instead. For example:
    
          #define PRINT(x)  (void)( printf("%s\n\r",x ) ) 


  4. -or-

  5. Program without the conversion or casting if possible. For example:
    
          #define PRINT(x)  printf("%s\n\r", x ) 



STATUS

Microsoft has confirmed this to be a bug in the products listed at the beginning of this article. This problem was corrected in Visual C++ 32-bit Edition, version 2.0.

Additional query words: 1.00 1.50

Keywords : kbCRT kbVC
Version : winnt:
Platform : winnt
Issue type :


Last Reviewed: February 2, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.