我正在制作一个业余爱好者内核,并且正在尝试实现一个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) 我正在尝试编写一种从.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)