但是我觉得只判断最后的符号来判断字符串是否结束不是很严谨,还有别的办法判断字符串是否结束吗?查找资料可以发现字符串是以’\0’结尾的,所以我们应该可以判断*(p+i)是否为‘\0’。修改后的程序如下:
二、扩展研究1、我们之前是使用bp寄存器对栈进行操作来实现printf()函数,那么如果用这种方法该怎么实现这个题目?
答:我们可以用bp寄存器对栈操作来代替po指针的功能跳转参数地址和字符串首地址。
修改后的程序如下:
这里_BP还要加4是因为定义了两个局部变量i和j,它们是存储在栈中的,占4个字节。
2、如果不用printf函数输出可以吗?
答:我们常用的输出函数还有puts函数、putchar()函数,但是他们都需要头文件。我们也可以将结果输出到屏幕上指定位置,即将每个字符串都输出到b800段显示。
三、研究总结我们认识的输出函数,都是将数据放进输出流中,从底层看就是将数据放进一个缓存,之后再放到b800数据段来显示,只不过我们写的底层输出函数只能将数据显示在屏幕的固定位置,而我们使用的输出函数会进行一些处理,使数据显示在屏幕上合适的位置而已。
我们写的这一��输出函数只能输出字符串,而且无法控制输出的位数等,而printf函数就引入了说明符,这样就可以人为地控制数据输出的格式等,更加的方便。
字符串其实就是字符数组,只不过因为它是连续的,为了更方便地输出,输出函数为它提供了专门的输出模式,这个模式也是以字符串的输出为基础的。