论坛首页· 友情链接申请·申请版主· 广告投放· 道具中心· 设为首页· 收藏本站
 15 12
发新话题
打印

[求助] 这段代码哪错了?(可变参数)

这段代码哪错了?(可变参数)

#include < stdio.h >
#include < string.h >
#include < stdarg.h >
/* 函数原型声明,至少需要一个确定的参数,注意括号内的省略号 */
int demo( char *, … );
void main( void )
{
demo(”DEMO”, “This”, “is”, “a”, “demo!”, “\0″);
}
int demo( char *msg, … )
{
va_list argp; /* 定义保存函数参数的结构 */
int argno = 0; /* 纪录参数个数 */
char *para; /* 存放取出的字符串参数 */
// 使用宏va_start, 使argp指向传入的第一个可选参数,
// 注意 msg是参数表中最后一个确定的参数,并非参数表中第一个参数
va_start( argp, msg );
while (1)
{
//取出当前的参数,类型为char *
//如果不给出正确的类型,将得到错误的参数
para = va_arg( argp, char *);
if ( strcmp( para, “\0″) == 0 ) /* 采用空串指示参数输入结束 */
break;
printf(”参数 #%d 是: %s\n”, argno, para);
argno++;//注意:栈底在高地址,栈顶在低地址,所以这里是++
}
va_end( argp ); /* 将argp置为NULL */
return 0;
}
____________________

提示错误.可我又查不出,有劳大家看看.

TOP

函数不是至少需要一个固定参数吗?
因为梦想而努力,因为有你而精彩!
mail: qianzongming@gmail.com

TOP

那个参数栏里的。。。改成...
“”统统改成""
lz太粗心了
从易做事,从简做人。埋头做事,低头做人。不予他求,只扪自力。休言酸骚,命运求己。

TOP

我改过的

#include < stdio.h >
#include < string.h >
#include < stdarg.h >

/* 函数原型声明,至少需要一个确定的参数,注意括号内的省略号 */

int demo( char *,...);

void main( void )
{
        demo("DEMO", "This", "is", "a", "demo!", "\0");
}

int demo( char *msg,...)
{
        va_list argp; /* 定义保存函数参数的结构 */
        int argno = 0; /* 纪录参数个数 */
        char *para; /* 存放取出的字符串参数 */
        // 使用宏va_start, 使argp指向传入的第一个可选参数,
        // 注意 msg是参数表中最后一个确定的参数,并非参数表中第一个参数
        va_start( argp, msg );
        while (1)
        {
                //取出当前的参数,类型为char *
                //如果不给出正确的类型,将得到错误的参数
                para = va_arg( argp, char *);
                if ( strcmp( para, "\0") == 0 ) /* 采用空串指示参数输入结束 */
                        break;
                printf("参数 #%d 是: %s\n", argno, para);
                argno++;//注意:栈底在高地址,栈顶在低地址,所以这里是++
        }
        va_end( argp ); /* 将argp置为NULL */
        return 0;
}
从易做事,从简做人。埋头做事,低头做人。不予他求,只扪自力。休言酸骚,命运求己。

TOP

回复 2# 的帖子

lz的函数有一个固定参数的
从易做事,从简做人。埋头做事,低头做人。不予他求,只扪自力。休言酸骚,命运求己。

TOP

是中英文标点符号错了,我今晚找到错哪了...谢谢大家了.

TOP

楼主粗心得不是一点半点: 中英文标点符号是一个问题,还有一个潜在的问题,请问 "\0"这是几个字节?空字符串这样表示就行了: "",虽然得到相同的结果但也应注意~~~~

TOP

的确,是个不小的问题...谢谢了.

TOP

引用:
原帖由 risingsun 于 2008-8-12 22:33 发表
楼主粗心得不是一点半点: 中英文标点符号是一个问题,还有一个潜在的问题,请问 "\0"这是几个字节?空字符串这样表示就行了: "",虽然得到相同的结果但也应注意~~~~
像你说那样,似乎不行啊.

--------------------Configuration: 081202 - Win32 Debug--------------------
Compiling...
081202.cpp
E:\做实验用的\081202.cpp(13) : warning C4101: 'arg' : unreferenced local variable
E:\做实验用的\081202.cpp(14) : warning C4101: 'num' : unreferenced local variable
E:\做实验用的\081202.cpp(16) : error C4716: 'add' : must return a value
Error executing cl.exe.
081202.obj - 1 error(s), 2 warning(s)

TOP

回复 6# 的帖子

只处理第一个0之前的字符
因为梦想而努力,因为有你而精彩!
mail: qianzongming@gmail.com

TOP

 15 12
发新话题