如何逆转奎因?

时间:2010-09-12 05:55:00

标签: c quine

我写了一个C程序,它打印了n次,但我无法得到如何反转打印n次。例如,如果示例程序是:

hello

然后所需的输出应为"olleh" for n=1。 这是我的quine计划,

#include <stdio.h>
int main()
{
  int n;
  char c;
  FILE *f;
  f=fopen(__FILE__,"r");
  scanf("%d",&n);
 while(n--)
 {
 while((c=getc(f))!=EOF)
 putchar(c);
 fseek(f,0,0);
 }
  return 0;
} 

3 个答案:

答案 0 :(得分:3)

这不是一个纯粹的quine。见the Quine article in Wikipedia

  

quine不接受任何输入。允许输入   将允许源代码被馈送   通过键盘到程序,   打开的源文件   计划和类似的机制。

答案 1 :(得分:2)

刚刚发现这篇文章。 这是C中的反向quine样本,我做了。您可以根据自己的需要进行修改!

a="};)01(rahctup;)--p*(rahctup);p*;43=p*(rof;)a(ftnirp;))a,b=p(tacrts(nelrts=+p{)p*rahc(niam;}7393422{=]99[b;";b[99]={2243937};main(char*p){p+=strlen(strcat(p=b,a));printf(a);for(*p=34;*p;)putchar(*p--);putchar(10);}

答案 2 :(得分:1)

最简单的方法是将文件读入数组(如answer),然后反转数组:

void swap(char* a, char* b) {
  char tmp = *b;
  *b = *a;
  *a = tmp;
}

void reverse(char* arr, int size) {
  for (int i = 0; i < size/2; ++i) {
    swap(arr+i, arr + (size - (i + 1)));
  }
}