2016.7.14scanf gets getchar i++ ++i 如何将密码用***表示

1.如何把“123”输出123,“1234567”输出1234567.

 提示:“123”   ’1’-’0’=1  ‘2’-’0’=2  1*100+2*10+3*1=123

#include<stdio.h>

#include<string.h>

#define MAX_SIZE 1024

int main()

{   

    int result=0;

    int i=0;

    int len=0;

    int flag=1;

    char src[MAX_SIZE] = {0};

    printf("please imput the string:\n");

    scanf("%s",src);

    len=strlen(src);

    if(src[0] =='-')

    {

        flag = -1;

    }

    for(i=0;i<len;i++)

    {

        if((src[i] >= '0')&&(src[i] <= '9'))

    {

        result = result*10+(src[i]-'0');

    }

    }

    result=result*flag;

    printf("%d\n",result);

    return 0;

}

 

 

atoi:将字符串变换车成相应的数字。遇到字符串停止。

    

上题也可以建立函数,进行调用

int my_atoichar *src

int flag=1

int result=0

if(*src =='-')

    {

        flag = -1;

        src++

    }

 

while*src=’\0’)

{

    if(*src >= '0'&&*src <= '9')

    {

        result = result*10+(*src-'0');

    }

else

    {

        break

    }

    src++

 

}

return  result*flag;

 

 

读取一个小于10位的字符串。

#include<stdio.h>

int main()

{

    char ch;

    char src[100];

    int i=0;

    while((ch=getchar())!='\n')

    {

        src[i]=ch;

i++;

if(i==10)

{

    printf("error!\n");

    exit(1);

}

    

    

    }

src[i]='\0';

printf("src=%s\n",src);

return 0;

}

 

 

读一个有三个元素的数组。

#include<stdio.h>

int main()

{

    int i;

int a[3];

for(i=0;i<3;i++)

    {

        scanf("%d",a+i);   //scanf("%d",&a[i]);

    }

    for(i=0;i<3;i++)

    {

        printf("a[%d]=%d\n",i,*(a+i)); // printf("a[%d]=%d\n",i,a[i]);

 

    }

    return 0;

}

 

方式2

#include<stdio.h>

int main()

{

    int i;

int a[3];

int *p=a

for(i=0;i<3;i++)

    {

        scanf("%d",p++);   

    }

    for(i=0;i<3;i++)

    {

        printf("a[%d]=%d\n",i,*(p+i));

 

    }

    return 0;

}

 

 

2.如何把123输出“123”,1234567输出“1234567.

 提示:

 

 

 

#include<stdio.h>

#include<string.h>

#define MAX_SIZE 1024

char *my_bianhuan(int num)

{   

    char temp;

    int len=0;

    int i=0;

    static char result[MAX_SIZE]={0};

    

    while(num!=0)

    {

         result[i]=(num%10)+'0';     注释:先取余,再除10

         num=num/10;

         i++;

    }

    result[i]='\0';

    len=strlen(result);

    for(i=0;i<len/2;i++)

    {

    temp=result[i];                注释:倒叙函数

result[i]=result[len-1-i];

result[len-1-i]=temp;

    }

    return result;

 

 

 

}

 

int main()

{

    int num;

    printf("please input the numbers:\n");

    scanf("%d",&num);

    char *result=my_bianhuan(num);

    printf("result=%s\n",result);

    return 0;

}

 

 

 

scanf格式化输入

不让输,用getchar

举例:scanf“%d”,&a;

      getchar()

      scanf(“%s”,&b);

否则第二个scanf读取不了。

gets没有缓冲区。

 

1.scanf:一条语句可输入多个数据。

默认以空格来跳到下一个输入变量,若完成了本次调用时用户本次规定的输入量,可以缓冲起来,继续输入下一次调用该函数时的数据,发出执行指令后做一起处理。该函数不接收空格,多个空格等同一个空格。可以在一次规定的变量之间加上其他的符号来自定义跳转指令。

若完成了本次规定的输入量,回车表示执行本次要的操作;若未完成本次规定的输入量,则作用同于空格,是跳到下一个输入变量。该函数也不接收回车,多个回车等同一个回车。

故而要注意该函数只能正常接收无空格和字符串,当然含有回车符的字符串也是不行的。

 

2.gets:输入的对象是字符串,会把一切能接收进来的字符都接收进来(除了回车),如下面代码1中scanf()后面的空格和回车,以回车表示结束该字符串的输入结束。常以防干扰以代码2的形式和scanf();搭配。但是注意一切能接收是指上一个输入变量不要的字符,如上面的空格和回车,但是形如代码3,上一个回车是上一个字符串必要的结尾符,不能给下一个字符接收了。

 

3.getchar():输入字符的函数,一次输入单个字符,可以接收任意形式的字符,可以把它付给一个字符变量,也可以不要接收器。若要用来输入字符串,则可以用EOF来结尾,形式是while((c=getchar())!=EOF)

 

printf 行缓冲

scanf与printf用的是同一个缓冲区

printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下:

    1 缓冲区填满

    2 写入的字符中有‘\n’ '\r'

    3 调用fflush手动刷新缓冲区

4 调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新

 

   c语言中如何让输入的密码用 * *****表示?

  char pass[20];
    for(i=0;i<20;i++)
    {
       pass[i]=getchar();
       if(pass[i]=='\r')   break;
       putchar('*');
    }

 

i++先使用后运算   使用完毕之后。结算运算符为①;②  , ③  函数()

++i先运算后使用      先自加后使用。

i=2

num=++i+++i+++i+++i

num=4+4+5+6

结果为19。两个才能构成一个运算。

 

++i被替换为变量名,i++被替换为数值。

 

 

 

++i被替换为变量名,i++被替换为数值。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值