小编msk*_*msk的帖子

printf()函数的实现

我正在制作一个业余爱好者内核,并且正在尝试实现一个printf()功能。

这是我的实现:

void kprint(uint8_t *format, ...) {
  va_list ap;
  va_start(ap, format);

  uint8_t *ptr;

  for (ptr = format; *ptr != '\0'; ptr++) {
    if (*ptr == '%') {
      ptr++;
      switch (*ptr) {
        case 's':
          puts(va_arg(ap, uint8_t *), 0x0F, xPos, yPos);
          break;
      }
    } else {
      puts(ptr, 0x0F, xPos, yPos);
      ptr++;
    }
  }

  va_end(ap);
}
Run Code Online (Sandbox Code Playgroud)

当我要打印“ Hello World!”时 使用此功能,它返回我:

"Hello %sllo %so %sWorld"
Run Code Online (Sandbox Code Playgroud)

这是函数调用:

kprint("Hello %s", "World");
Run Code Online (Sandbox Code Playgroud)

c operating-system osdev

2
推荐指数
1
解决办法
345
查看次数

std::ifstream,删除函数的使用

我正在尝试编写一种从.txt文件中获取数据的方法。

我需要从其他方法调用这个方法。我在将参数传递给方法时遇到问题。

图书馆.h:

#include <iostream>
#include <vector>
#include <string>
#include <fstream>

class Library
{
   std::vector<std::string> &mBooks;
   std::string books_list;
   std::string output;
   std::string books_path;

   void read_file(std::string &fn, std::ifstream &fn_var, std::string 
        &s, std::vector<std::string> &vn);
   void create_books_database(std::string &fn, std::ifstream,&fn_var,
        std::string &s, std::vector<std::string> &vn);
};
Run Code Online (Sandbox Code Playgroud)

库.cpp:

void Library::read_file(std::string &fn, std::ifstream &fn_var, 
std::string &s, std::vector<std::string> &vn)
{ 
    std::string &filename = fn;
    std::ifstream &name = fn_var;
    std::string &output = s;
    std::vector<std::string> &vector_name = vn;

    name.open(filename);

    if(!name)
    {
        std::cerr<<"Failed to open file "<<filename<<std::endl;
        exit(1);
    }

    while(!name.eof()) …
Run Code Online (Sandbox Code Playgroud)

c++ function ifstream deleted-functions

0
推荐指数
1
解决办法
1万
查看次数