修改 printf 输出

Modifying printf output

#include <stdio.h>
int main(){
   printf("asd");
return 0;
}

任务是不修改这个程序,覆盖或使用定义,在windows环境下,这个程序必须写出:Yourname asd Yourname。 有什么想法吗?

你可以这样做(编辑为从标准输入读取 Yourname):

#include <stdio.h>
#include <string.h>
int main(){
    printf("asd");
    return 0;
}

int printf(const char *__restrict __format, ...)
{
    char str[106], scs[50];
    scanf("%s", &scs);
    strcpy(str,scs);
    puts(strcat(strcat(strcat(strcat(str," "), __format)," "),scs));
    return 1;
}

这是一个working demo

你可以通过简单的方式做到这一点。全局对象创建在静态内存区,在main执行前分配和初始化,main执行后释放。以下是您问题的简单答案:

#include<iostream>

struct MyName {
public: 
    MyName() { printf("%s", "GaborRuszcsak\n"); }
    ~MyName() { printf("%s", "\nGaborRuszcsak\n"); }
};

MyName isGaborRuszcsak;

int main(int argc, char** argv){
    printf("asd");
    return 0;
}

希望对您有所帮助。