Распечатка обратной косой черты в программе 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>
линия) Мое решение было одной строкой (без конечного конца строки.)