输入输出函数和i++与++i的区别

来源:互联网 发布:hadoop2.7 java开发 编辑:程序博客网 时间:2024/06/12 20:38
1.atoi函数
作用:把字符串转化成数字,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
范例:#include<stdlib.h>


      #include<stdio.h>


          int main(void)


          {


              float n;


              char*str="12345.67";


              n=atoi(str);


              printf("string=%s ,integer=%f\n",str,n);


              return 0;


           }
     输出结果:string = 12345.67 integer = 12345.000000
解释:string的输出结果是一个字符串,所以完整输出;而atoi函数遇到非数字时会停止,所以在遇到小数点时停止了,结果就变成了12345.67.
2.scanf,gets和getchar的比较
不同点:1、 gets函数读取数据时,接受的数据包括数据和回车符。即:读取数据后输入流没有输入 操作动作。 


        2、 scanf函数读取数据时,接受的数据只有数据,不包括回车符。即:读取数据后输入流 还存在回车符操作动作。 


        3、 getchar函数读取一个字符数据时,接受的数据只有一个字符,不包括回车符。即: 读取一个字符数据后就默认输入数据结束。读取数据后输入流还存在回车符操作动作。


        4、scanf与gets相似,但不完全相同,使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
 
        5、gets函数取数不经过缓冲区,而scanf取数有缓冲区。    
      


相同点  1 scanf,gets和getchar都是从键盘输入数据然后读取的函数。


在从键盘取字符型常量时,如果前面还有一个scanf的函数,可以用getchar去清除上一句缓冲区的\n,否则会直接跳过读取字符型变量这一步。
3.++i和i++的区别
        ++i先自加后使用,i++是先使用完毕后再加
        ++i和i++定义不难理解,关键是实际操作不一定会了。


范例     i的初值都为2
        (1)num=(i++)+(i++)+(i++)+(i++);
        (2)num=(i++)+(++i)+(++i)+(++i);
        (3)i=(i++)+(++i)+(i++)+(++i);
        (4)int fun(int a,int b)(程序不完整)
          {
               printf("%d %d\n",a,b);
               return 0  
          }
          int main()
         {
               int i=2;
               fun(i++,++i);
               return 0;
         }
         结果:(1)num=2+2+2+2=8 i=2+1+1+1+1=6
               (2)num=4+4+5+6=19i=6
                (3)i=3+3+3+4+2=15
                (4)a=3,b=4



























1 0
原创粉丝点击