Распечатка обратной косой черты в программе C quine

Я пытаюсь написать программу Quine для следующего исходного кода C:

#include<stdio.h>

char name[] = "Jacob Stinson";
int main(){
    char *c="#include<stdio.h> char name[] = \"Jacob Stinson\"; int main(){char *c=%c%s%c; prinf(c,34,c,34);}";
printf(c,34,c,34);
}

Мне нужно включить обратную косую черту перед " в строке, чтобы правильно распечатать строку 3, однако, когда я распечатаю *cЯ хочу, чтобы присутствовали эти обратные слеши, чтобы правильно копировать исходный код. В настоящее время он исключает обратную косую черту из выходных данных.

Хотел узнать, знает ли кто-нибудь, как это сделать.

1 ответ

Поскольку компилятор интерпретирует escape-последовательности только в одном направлении (исключая их), я думаю, что нет возможности включить escape-последовательность в код и сделать так, чтобы она отображалась в списке. Компилятор всегда устраняет одну из обратных косых черт при вводе исходного файла, что делает его другим при выводе. printf использования %s формат, чтобы разрешить рекурсивную часть проблемы и позволить вам печатать на полках, и, как вы уже догадались, вы должны использовать целочисленные версии символов разделения для " разграничение символов. Зачем использовать %c чтобы иметь возможность разделять строки в вашей программе, если есть альтернативный метод для включения escape-последовательностей? По той же причине я не смог включить какой-либо разделитель конца строки, поэтому я написал ту же проблему в одной строке (без использования #include <stdio.h> линия) Мое решение было одной строкой (без конечного конца строки.)

Другие вопросы по тегам