在C quine程序中打印出反斜杠

时间:2015-09-02 14:49:21

标签: c quine

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

想知道是否有人知道该怎么做。

1 个答案:

答案 0 :(得分:0)

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