首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何反转Quine?

如何反转Quine?
EN

Stack Overflow用户
提问于 2010-09-12 13:55:00
回答 3查看 527关注 0票数 0

我已经写了一个C程序,可以打印n次,但我不知道如何反转打印n次。例如,如果示例程序是:

代码语言:javascript
复制
hello

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

代码语言:javascript
复制
#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;
} 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-12 14:11:31

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

代码语言:javascript
复制
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)));
  }
}
票数 1
EN

Stack Overflow用户

发布于 2010-09-12 14:07:39

这不是一个纯粹的奎因。请参阅the Quine article in Wikipedia

不接受任何输入。允许输入将允许源代码通过键盘输入程序,打开程序的源文件,以及类似的机制。

票数 3
EN

Stack Overflow用户

发布于 2011-02-26 22:49:41

我偶然发现了这篇文章。这是我用C语言编写的反quine示例。你可以修改它来满足你的需要!

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3693924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档