scanf的特殊用法 const用法、数值型数-字符串转换、可变长参数

scanf的特殊用法

int main()
{
    @autoreleasepool {
        char ch[100];
        NSLog(@"请输入一个字符串");
        scanf("%s",ch);
        printf("%s\n",ch);
        char ch1;
        NSLog(@"请输入一个字符—");
        scanf("%*[^\n]"); //清除键盘缓冲区中\n一起的所有字符
        scanf("%*c"); //只能清除键盘缓冲区的一个字符
        scanf("%c",&ch1);
        printf("%c\n",ch1);

        char str[5];
        NSLog(@"请输入一个字符串");
        scanf("%4s",str); //保证最多只能输入4个字符
        printf("%s\n",str);
    }
    return 0;
}

const用法

int main()
{
    @autoreleasepool {
        const int a=10 ; //const能将变量a变成只读的,但是不会放到代码区
        //a=20;
        int *p=&a;
        *p=20;
        printf("%d,%d\n",a,*p);    //输入结果(10,20)

        int b=30;
        const int *p2=&b;
        //*p2=40;          //const将指针指向的变量变成只读的
        int c=50;
        p2=&c;
        NSLog(@"%d",*p2); //输出结果 50

        int* const p3=&b;
        *p3=60;
                   // p3=&c; //const 将指针本身变成只读的
        const int *const p4;


    }
    return 0;
}

数值型数-字符串转换

int main()
{
    @autoreleasepool {
        //数值型数据转换成字符串
        int i=0;
        char buffer[100];
        sprintf(buffer, "%d",i);
        printf("%s\n",buffer);

        double d=3.1415926;
        unsigned long int ul=9876543210;
        sprintf(buffer, "%.7lf",d);
        printf("%s\n",buffer);
        sprintf(buffer,"%lu",ul);
        printf("%s\n",buffer);
        //字符串向数值类型数据的转换
        char *data ="54321";
        sscanf(data,"%d", &i);
        NSLog(@"%d",i);
        data="2.6845318";
        sscanf(data,"%lg",&d);
        NSLog(@"%.8lg",d);


    }
    return 0;
}

可变长参数

void printArg(int num,...){
    va_list vap;
    va_start(vap, num);
    
    for(int i=0;i<num;i++){
        int arg=va_arg(vap, int);
        printf("%d ",arg);
    }
    printf("\n");
    va_end(vap);
}
//写一个可变长参数,求所有可变长参数的和
void printSum(int num,...){
    va_list vap;
    va_start(vap, num);
    int sum=0;
    for(int i=0;i<num;i++){
        sum+=va_arg(vap, int);
    }
    NSLog(@"%d\n",sum);
    va_end(vap);
}


int main()
{
    @autoreleasepool {
        NSLog(@"Hello world");
        NSLog(@"%d",10);
        
        printArg(3,10,20,30);
        printArg(6,1,2,3,4,5,6);
        printSum(6,10,10,10,10,10,10);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值