【发布时间】:2021-10-12 18:37:30
【问题描述】:
我有以下问题:我将一个字符串传递给一个函数,但是,当它接收到字符串时,它接收到一个空值并且什么都不做,我已经尝试解决它好几天了,但什么也没做,我认为这是 main() 函数中的错误
这是我的代码:
void main(){
clear_screen();
print_string("Hello World!");
}
void print_string(const char *string){
int offset = get_cursor();
int i = 0;
while (string[i] != 0) {
if(offset >= ROWS * COLS * 2) {
offset = scroll_line(offset);
}
if(string[i] == '\n') {
offset = move_offset_to_new_line(offset);
}else{
print_char(string[i], offset);
offset += 2;
}
i++;
}
set_cursor(offset);
}
我的代码中会发生什么? 注意:我正在关注本网站上的示例:https://dev.to/frosnerd/writing-my-own-boot-loader-3mld
【问题讨论】:
-
您确定包含字符串文字的图像部分已被引导加载程序正确加载到内存中,并且地址正确吗?
-
是的,我可以使用 print_char() 函数编写字符,但是 print_string() 函数将字符串变量设为 null,我认为这是函数调用
-
您是否在
void print_string(const char *string)的 main 之前声明了原型?或者更好地将该功能向上移动。函数必须在使用前声明 -
是的,隐式声明是
int print_string();带有未指定的参数,所以它实际上应该仍然有效。至少我不明白它会如何导致声称的失败。 -
如果你现在通过跳过偏移处理、光标处理和特殊字符处理来简化你的函数会发生什么?