在通过了Adalab的入学赛选挑战者赛之后,Adalab联合创始人 @小熊 给我出了一道加式题:

用你最擅长的语言写一段程序,这段程序运行之后,输出的内容就是这段程序本身。

第一眼看到这个题目, 我就脑补出这代码大概长这样?

#include <stdio.h>
int main (void) {printf("#include <stdio.h> int main(void) {printf("***")}");
}

这题目咋一看很简单,仔细想想也没那么简单。

在我认为,完成任何一件事,首先得掌握基础知识,才能带着基础知识去“思考”如何完成这件事。如果没有基础知识去进行所谓的“思考”,那将会是徒劳无功,走错方向。

我本身是编程小白,即使是我最擅长的C语言,常用函数可能都忘记了,所以说我是“没有基础知识的”,“没有基础知识“根本没法思考,写起来更是困难。

不过 @小熊 要求我一定有自己的思考以后,才能GIYF。

自己思考过使用fopen()函数打开程序本身的源代码文件并打印出来或者使用指针去读取程序开头和结尾再打印出来,但对指针和内存的理解还不够深入,放弃了这种思路。

在经过自己的思考以及结合搜索引擎之后,程序如下:

程序本身: output_ifself.c

#include <stdio.h>int main(void) {char * p = "#include <stdio.h> %c int main(void) {char * p = %c%s%c; printf(p,10,34,p,34); return 0;}";printf(p,10,34,p,34);return 0;
}

程序输出:

运行成功!

思路:首先,程序定义一个指向字符串的指针:

char * p ;

指针的内容是:

char * p = "#include <stdio.h> %c int main(void) {char * p = %c%s%c; printf(p,10,34,p,34); return 0;}";

再而,使用格式化输出函数printf():

printf(p,10,34,p,34);

这里,第一个p是字符串指针变量,为方便理解,我们可以拆开写成这样:

printf(#include <stdio.h> %c int main(void) {char * p = %c%s%c; printf(p,10,34,p,34); return 0;},10,34,p,34);

然后,转换说明「%c %c%s%c」将会被10,34,p,34(字符串指针变量)代替。

10 34 在ASCII编码中分别代表空格 和 双引号

最后:

return 0;

程序结束。

Referrences: CSDN: 打印程序本身

c++读取声音文件之后回音_一段程序运行之后,输出的内容就是这段程序本身。...相关推荐

  1. python中把输出结果写到一个文件中_Python3.6笔记之将程序运行结果输出到文件的方法...

    Python3.6笔记之将程序运行结果输出到文件的方法 更新时间:2018年04月22日 14:27:32 投稿:jingxian 下面小编就为大家分享一篇Python3.6笔记之将程序运行结果输出到 ...

  2. matlab读取声音文件

    2019独角兽企业重金招聘Python工程师标准>>> 1) matlab读取pcm音频数据 https://blog.csdn.net/believe646875970/artic ...

  3. python如何读取csv文件列表页_每25行读取一个csv文件,并使用python传递到列表

    我想读取一个文件,并将该文件的每25行转换为一个列表,也就是说,它应该有4个列表,每个列表中包含25个项目(对于一个文件的100行).我无法获得这个问题的代码. 输入文件看起来像这样,实际上它有100 ...

  4. [转载] pythonpandas读取csv文件最后一行_简单小案例(一):使用Pandas在Python中读取和写入CSV文件...

    参考链接: 使用Pandas在Python中读写CSV文件 前期文章链接: YOLOv3论文 https://arxiv.org/pdf/1804.02767.pdf 正文: 有许多方法可以在Pyth ...

  5. python读取大文件太慢_强悍的Python读取大文件的解决方案

    Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适 ...

  6. python01g内存读取10g文件并排序_将大文件逐行读取到Python2.7中时的内存使用

    堆栈溢出, 我正在从事一个涉及一些大文件(10-50Gb)的基因组学项目,我想将这些文件读入Python 2.7进行处理.我不需要将整个文件读到内存中,而是简单地逐行读取每个文件,执行一个小任务,然后 ...

  7. python读取xml文件信息失败_通过XML读取XML文件时出错。

    我试图用python读取XML文件xml.etree但有时对于某些文件,我在解析文件时会出现内存错误.我的XML文件大小是912Mb,这个问题与文件大小有关吗?在 代码:from xml.etree ...

  8. python读取mat文件并画图_[宜配屋]听图阁

    先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); sav ...

  9. python读取csv文件第一行_尝试读取CSV文件的第一行返回['/']

    我通过Django上传了一个CSV文件,我试着读它的第一行.文件存储在服务器上的/tmp/csv_file/test.csv 文件如下所示: ^{pr2}$ 我正在尝试获取文件的标题,例如:absol ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续16)
  2. ANTLR 4的C#实例
  3. Leetcode 25.K个一组翻转链表
  4. 使用vue制作富文本框
  5. POJ2676,HDU4069解决数独的两种实现:DFS、DLX
  6. 【转】带你玩转Visual Studio——01.开篇介绍
  7. Tensorflow C3D完成视频动作识别
  8. (21)FPGA移位寄存器设计(第5天)
  9. python人工智能算法代码_python人工智能,分类例解
  10. 在django中实现表单
  11. Security+ 学习笔记55 隐私和合规性
  12. java--idea-生成jar包的配置
  13. 【毕业设计】python+opencv+机器学习车牌识别
  14. 抑郁症,恐惧,压力和肠道微生物群脱不开的关系
  15. 计算机专业就业方向总结(选择也许更重要)
  16. 大学生python心得1000字_大学生心得体会1000字
  17. python柱状图加百分比_【python】封装接口直接利用DataFrame绘制百分比柱状图
  18. 【微信小程序】微信小程序开发(一)
  19. STM32学习心得二十六:DAC数模转换实验
  20. ft232rl可以了

热门文章

  1. shell脚本编程之更多结构化命令
  2. matlab绘制圆,且求解两个圆的交点坐标
  3. CVPR 2021 | RfD-Net: 从点云中重建三维物体实例
  4. YOLO发展史(v4/v5的创新点汇总!)
  5. 上帝视角任意切换:三维重建和图像渲染是怎么结合的?
  6. 51篇最新CV领域综述论文速递!涵盖14个方向:目标检测/图像分割/医学影像/人脸识别等方向...
  7. 数值分区间_EXCEL统计区间个数的专属函数
  8. Spring-redis基础配置
  9. java pdf转换为png图片(1)
  10. 远程服务器的环境的配置