0

我正在尝试为以下C源代码编写一个 quine 程序:

#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我希望这些反斜杠出现,以便正确复制源代码。目前它省略了输出中的反斜杠。

想看看是否有人知道如何去做。

4

1 回答 1

0

由于编译器仅在一个方向解释转义序列(对它们进行转义),我认为不可能在代码中包含转义序列并使其在列表中显示为这样。编译器将始终消除源文件输入中的一个反斜杠,使其在输出中看起来不同。使用格式允许问题的递归部分并允许您搁置打印,并且正如您猜对的那样,您必须使用整数版本的分隔字符作为printf分隔字符。如果存在包含转义序列的替代方法,为什么要使用能够在程序中分隔字符串?出于同样的原因,我无法包含任何行尾分隔符,所以我在一行中写了同样的问题(不使用%s"%c#include <stdio.h>行)我的解决方案是一行(没有最后一行。)

于 2015-09-04T07:50:24.937 回答