. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->综合研究
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  请教 综合研究5 的第二小题  [待解决] 回复[ 5次 ]   点击[ 1448次 ]  
musicvs
[帖 主]   [ 发表时间:2008-10-07 21:40 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:14
注册日期:2008-08-20 11:21
在tc2.0下写了这个程序:
void showchar(int,int,...); 

main() 

   showchar(8,2,'a','b','c','d','e','f','g','h'); 


void showchar(int n,int color,...) 

   int a; 
   for (a=0;a!=n;a++) 
   { 
      *(char far *)(0xb8000000+160*10+80+a+a)=*(int *)(_BP+8+a+a); 
      *(char far *)(0xb8000000+160*10+81+a+a)=color; 
   } 


问:showchar函数是如何知道要显示多少字符的?
   printf函数是如何知道有多少个参数的?

我想不通的是第二问:printf函数是如何知道有多少个参数的?
哪位朋友可以提示我一下吗?
jcw2008
[第1楼]   [ 回复时间:2008-10-19 20:51 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-10-14 16:49
检测格式字符串中有几个变量(用%表示的),以此可以得知有几个参数。
yugong
[第2楼]   [ 回复时间:2008-12-11 20:48 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:8
注册日期:2008-09-15 09:10
我上机测试这个函数,怎么字母没有变成红色?似乎最下面的语句没有执行。
yanjiajia
[第3楼]   [ 回复时间:2009-04-05 15:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-17 21:34
%号的个数决定了传递的参数个数!它是一个函数。可以将它与研究5的showchar比较,就会发现传递的第一个参数就是参数的个数,类似的作用。
main ()
{
printf("%c%c%c",'a','b','c','d');
}
只是输出了三个。就是证明。

加油!
kid0713
[第4楼]   [ 回复时间:2009-07-08 09:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-13 07:29
我不懂这个函数跟这个问题(printf函数是如何知道有多少个参数的? )有什么关系,为什么你们会想到%号的个数决定了传递的参数个数啊?怎么从这个函数看不出来啊
acool
[第5楼]   [ 回复时间:2009-07-10 16:00 ]   [引用]   [回复]   [ top ] 
荣誉值:49
信誉值:0
注册日期:2008-10-15 16:15
我不懂这个函数跟这个问题(printf函数是如何知道有多少个参数的? )有什么关系,为什么你们会想到%号的个数决定了传递的参数个数啊?怎么从这个函数看不出来啊
------------------
回复:想想我们是如何使用printf的,如果我们要输出一个字符,在前面字符串要使用%c,同理要输出什么类型的数据,都要在前面使用%d %s等

printf规定我们如何使用它,也是它实现的一个基础。

所以从前面的%的个数来判断参数是合理的。
(更严谨的说是,%d %s等有效的类型说明,如果只是%%是不能判断有两个参数的。)
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved