Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 编写简单的未确定参数的函数.使用了stdarg头文件里的宏。va_list, va_start, va_end, va_arg.
【标  题】:编写简单的未确定参数的函数.使用了stdarg头文件里的宏。va_list, va_start, va_end, va_arg.
【关键字】:stdarg,va_list,va_start,va_end,va_arg.
【来  源】:http://blog.csdn.net/YoungMaster/archive/2006/05/30/763339.aspx

编写简单的未确定参数的函数.使用了stdarg头文件里的宏。va_list, va_start, va_end, va_arg.

Your Ad Here

 

#include <iostream>
#include <string>
#include <cstdarg>

using namespace std;

void myerror(const char* p...);
int main()
{
 int i = 0;
 char *s = "slience";
 char c = 's';
 myerror("%d %s %c %c %s %d", i, s, c, c, s, i);
 cout<<endl;
 printf("%d %s %c %c %s %d", i, s, c, c, s, i);
 cout<<endl;
 system("pause");
 return 0;
}

void myerror(const char* p...)
{
 va_list ap;
 va_start(ap, p);
 //string s = "char*";
 int i = 0;
 while(p[i] != '\0')
 {
  if(p[i] == '%')
  {
   if(p[i + 1] == 'd')
   {
    int num = va_arg(ap, int);
    i = i + 2;
    cout<<num;
   }
   else if(p[i + 1] == 's')
   {
    char* ps = va_arg(ap, char*);
    i = i + 2;
    cout<<ps;
   }
   else if(p[i + 1] == 'c')
   {
                char c = va_arg(ap, char);
    i = i + 2;
    cout<<c;
   }
   else if(p[i + 1] == '%')
   {
                cout<<'%';
   }
   else
   {
    cout<<"I cannot understand %"<<p[i + 1];
    break;
   }
  }
  else
  {
   cout<<p[i];
   i++;
  }
 }
 va_end(ap);
}

为Pocket PC添加消息提醒功能:【上一篇】
动态规划算法剖析:【下一篇】
【相关文章】
  • 两种特殊的Java容器类List和Set分析
  • 启动TOMCAT时出现"-Djaava.endorsed.dirs="的解决办法
  • 【随机文章】
  • Java咖啡馆(8)——大话面向对象(下)
  • 完整的获取当前jsp文件路径的语句
  • 用Linux构建最好的FTP服务器
  • 对数据库中的记录用上一条下一条显示(二)
  • 闹钟&笑话1.0破解过程
  • default-metric
  • 利用反射来动态创建实例和调用方法
  • 大开发,男的开发大脑,女的开发身体
  • PLSQL入门第一章
  • Lotus Domino/Notes R4认证
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.