Вопрос по c++ – Как напечатать '\ n' вместо новой строки?

6

Я пишу программу, которая использует печатает шестнадцатеричный дамп своего ввода. Однако я сталкиваюсь с проблемами, когда передаются символы новой строки, вкладки и т. Д., Которые разрушают мое форматирование вывода.

Как я могу использовать printf (или, я думаю, cout), чтобы печатать \ n? вместо печати фактического перевода строки? Мне просто нужно сделать ручной анализ для этого?

РЕДАКТИРОВАТЬ: я получаю свои данные динамически, это не только \ n, о котором я пишу, а скорее все символы. Например, это мой оператор printf:

printf("%c", theChar);

Как я могу сделать этот вывод \ n, когда символ новой строки передается как theChar, но все равно заставляет его печатать обычный текст, когда theChar является допустимым печатаемым символом?

Error: User Rate Limit Exceeded ojrac

Ваш Ответ

11   ответов
4

printf("\\n");
8

Error: User Rate Limit Exceeded

3

Error: User Rate Limit Exceeded

printf("\\n");
5

Error: User Rate Limit Exceededctype.hError: User Rate Limit Exceededisprint:

if( isprint( theChar ) )
  printf( "%c", theChar )
else
  switch( theChar )
  {
  case '\n':
     printf( "\\n" );
     break;
  ... repeat for other interesting control characters ...
  default:
     printf( "\\0%hho", theChar ); // print octal representation of character.
     break;
  }
22

Error: User Rate Limit Exceededprintchar()Error: User Rate Limit Exceeded'\n'Error: User Rate Limit Exceeded'\n'Error: User Rate Limit ExceededintError: User Rate Limit ExceededmainError: User Rate Limit Exceededunsigned charError: User Rate Limit Exceededunsigned charError: User Rate Limit Exceeded

#include <stdio.h>

static void printchar(unsigned char theChar) {

    switch (theChar) {

        case '\n':
            printf("\\n\n");
            break;
        case '\r':
            printf("\\r");
            break;
        case '\t':
            printf("\\t");
            break;
        default:
            if ((theChar < 0x20) || (theChar > 0x7f)) {
                printf("\\%03o", (unsigned char)theChar);
            } else {
                printf("%c", theChar);
            }
        break;
   }
}

int main(int argc, char** argv) {

    int theChar;

    (void)argc;
    (void)argv;

    for (theChar = 0x00; theChar <= 0xff; theChar++) {
        printchar((unsigned char)theChar);
    }
    printf("\n");
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

-2

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

void main() { 
    int i=92, j=110; 
    clrscr(); 
    printf("%c%c", i, j);
    getch();
}

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

void main() {
  char a[10];
  gets(a);
  printf("\n\n\n\n");
  puts(a);
  getch(); 
}

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

36

Error: User Rate Limit ExceededВот.

1

Error: User Rate Limit Exceeded

std::printf(R"(\n)");

Error: User Rate Limit ExceededR"(Error: User Rate Limit Exceeded)" будет печататься буквально. escape-последовательности не будут обработаны.

1

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

void printfNeat(char* str)
{
    string tidyString(str);
    tidyString.replace("\n", "\\n");
    printf(tidyString);
}

Error: User Rate Limit Exceeded

[Edit]Error: User Rate Limit Exceeded

void printfNeat(char* str, ...)
{
    va_list argList;
    va_start(argList, msg);

    string tidyString(str);
    tidyString.replace("\n", "\\n");
    vprintf(tidyString, argList);

    va_end(argList);
}
Error: User Rate Limit Exceededen.cppreference.com/w/cpp/string/basic_string/replaceError: User Rate Limit Exceededwill replace the part of the string indicated by either [pos, pos + count) or [first, last)Error: User Rate Limit Exceeded
6

Error: User Rate Limit Exceeded"\\n".

Error: User Rate Limit Exceeded

Похожие вопросы