| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1611 人关注过本帖
标题:c wenti
只看楼主 加入收藏
苏护苏
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-5-4
收藏
得分:0 
回复 5楼 九转星河
恩恩谢谢
2017-05-04 21:39
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 10楼 苏护苏
这要详细讲还挺不容易的,涉及到参数列表可变函数,以后你自己去弄懂吧,如果你看《C和指针》或者《C程序设计语言》的话,会要求你实现scanf和printf这两个函数的简易版本的,到时候你就清楚了。

现在回答你的问题,简单的。

scanf的第一个参数可以称之为格式化输入列表。
以此为例:
scanf("%d,%d",&a,&b);
这条语句,要求你输入两个数字,这两个数字必须以逗号隔开。


scanf("%d%d",&a,&b);
这条语句,同样要求你输入两个数字,这两数字以任意空白字符隔开。(具体的细节我已经忘的差不多了,我都N+1个月没用过这个函数了。)
这实际上就是,程序如何判断输入结束的问题。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-04 21:45
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
说起来,我实现过printf()的简易版本。我去找找看了。
程序代码:
#include <stdio.h>
#include <stdarg.h>
void
printfmin( char *string, ... );

int
main( void )
{
    int a = 56;
    double b = 0.56;
    char c[10] = "abcd";

    printfmin("%d %f %s",a,b,c);
    return 0;
}

void
printfmin( char *string, ... )
{
    va_list ap;
    char *sval;
    int ival;
    double dval;

    va_start( ap, string );

    for( ; *string; string++ )
    {
        if( '%' != *string )
            putchar( *string );
        else
        {
            string++;

            switch( *string )
            {
                case 'd':
                    ival = va_arg( ap, int );
                    printf("%d",ival);
                    break;
                case 'f':
                    dval = va_arg( ap, double );
                    printf("%lf",dval);//编写函数将数值转换为字符串更好
                    break;
                case 's':
                    for( sval = va_arg( ap, char * ); *sval; sval++ )
                        putchar( *sval );
                    break;

            }
        }
    }

    va_end( ap );
}


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-04 21:57
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 13楼 renkejun1942
是可变参数类么……看来得找个时间脑补一下了……~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-04 22:27
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 14楼 九转星河
没什么好补的,到时候需要的时候临时翻书就行。可变参数列表,我到现在也就用来实现过简易的printf版本。
现在我都忘记的差不多了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-04 22:29
苏护苏
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-5-4
收藏
得分:0 
嗯嗯谢谢各位!
2017-05-05 00:01
快速回复:c wenti
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025736 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved