C - 只有读/写的Scanf

时间:2017-12-17 12:10:05

标签: c pointers scanf

我试图在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的地址与作为参数传递的指针不同。我尝试了不同的方法,但我不知道如何获得正确的地址。

0 个答案:

没有答案