修改 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;
}
希望对您有所帮助。
#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;
}
希望对您有所帮助。