我试图在C中编写自己的scanf函数,只使用读/写(没有libary函数,没有va_args等)。我想出了这段代码(现在只用于十进制整数):
void myscanf(char* text, ... ) {
char* ap = (char *) &text + sizeof text;
char* p;
int tempk;
for(p=text; *p != '\0'; p++){
if(*p=='%'){
p++;
switch (*p) {
case 'd':
char data[128] = { 0 };
read(0, data, 128);
tempk = StringToInt(data, 10);
int* k = (int*)ap;
*k = tempk;
break;
}
}
}
}
由于某种原因,* k的地址与作为参数传递的指针不同。我尝试了不同的方法,但我不知道如何获得正确的地址。