23,121
社区成员
发帖
与我相关
我的任务
分享
//minicrt.h
#ifndef _MINI_CRT_H_
#define _MINI_CRT_H_
#ifndef NULL
#define NULL (0)
#endif
//heap manage
void free(void *ptr);
void *malloc(unsigned size);
static int brk(void *end_data_segment);
int mini_crt_init_heap();
//string
char *itoa(int n,char *str,int radix);
int strcmp(const char *src,const char *dst);
char *strcpy(char *dest,const char *src);
unsigned strlen(const char *str);
//file
typedef int FILE
#define EOF (-1)
#define stdin ((FILE *)0)
#define stdout ((FILE *)1)
#define stderr ((FILE *)2)
int mini_crt_init_io();
FILE *fopen(const char *filename,const char *mode);
int fread(void* buffer,int size,int count,FILE *stream);
int fwrite(const void *buffer,int size,int count,FILE *stream);
int fclose(FILE *fp);
int fseek(FILE *fp,int offset,int set);
//io
int fputc(int c,FILE *stream);
int fputs(const char *str,FILE *stream);
int printf(const char *format,...);
int fprintf(FILE *stream,const char *format,...);
#endif
//string.c
char *itoa(int n,char *str,int radix){
return str;
}
int strcmp(const char *src,const char *dst){
int ret=0;
return ret;
}
char *strcpy(char *dest,const char *src){
char *ret=dest;
return ret;
}
unsigned strlen(const char *str){
int cnt=0;
return cnt;
}
//malloc.c
#include "minicrt.h"
typedef struct _heap_header{
enum{
HEAP_BLOCK_FREE=0XABABABAB,
HEAP_BLOCK_USED=0XCDCDCDCD,
}type;
unsigned size;
struct _heap_header *next;
struct _heap_header *prev;
}heap_header;
#define ADDR_ADD(a,o) (((char *)(a))+o)
#define HEADER_SIZE (sizeof(heap_header))
static heap_header *list_head=NULL;
void free(void *ptr){
}
void *malloc(unsigned size){
return NULL;
}
int mini_crt_heap_init(){
return 1;
}
//stdio.c
#include "minicrt.h"
int mini_crt_io_init(){
return 1;
}
static int open(const char *pathname,int flags,int mode){
int fd=0;
return fd;
}
static int read(int fd,void *buffer,unsigned size){
int ret=0;
return ret;
}
static int write(int fd,const void *buffer,unsigned size){
int ret=0;
return ret;
}
static int close(int fd){
int ret=0;
return ret;
}
static int seek(int fd,int offset,int mode){
int ret=0;
return ret;
}
FILE *fopen(const char *filename,const char *mode){
int fd=-1;
int flag=0;
int access=00700;
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
#define O_CREAT 0100
#define O_TRUNC 01000
#define O_APPEND 02000
return (FILE *)fd;
}
int fread(void *buffer,int size,int count,FILE *stream){
return read((int)stream,buffer,size*count);
}
int fwrite(const void *buffer,int size,int count,FILE *stream){
return write((int)stream,buffer,size*count);
}
int fclose(FILE *fp){
return close((int)fp);
}
int fseek(FILE *fp,int offset,int set){
return seek((int)fp,offset,set);
}
//输入输出函数
int fputs(int c,FILE *stream){
return c;
}
int fputs(const char *str,FILE *stream){
int len=strlen(str);
return len;
}
#define va_list char*
#define va_start(ap,arg) (ap=(va_list)&arg+sizeof(arg))
#define va_arg(ap,t) (*(t*)((ap+=sizeof(t))-sizeof(t)))
#define va_end(ap) (ap=(va_list)0)
int vfprintf(FILE *stream,const char *format,va_list arglist){
int ret=0;
return ret;
}
int printf(const char *format,...){
return vfprintf(stdout,format,arglist);
}
int fprintf(FILE *stream,const char *format,...){
return vfprintf(stream,format,arglist);
}