C语言学习(二)数据输入输出

1、C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的

字符输入函数:  getchar       字符输出函数:putchar     
格式输入函数:  scanf         格式输出函数: printf     
字符串输入函数:gets          字数串输出函数:puts

1.1、字符输入输出

字符输出函数putchar(c)

    #include<stdio.h>
    void main()
    {
        char a,b,c;
        a=‘B’;b=‘O’;c=‘Y’;
        putchar(a);
        putchar(b);
        putchar(c);
        putchar(‘\n’);
    }

字符输入函数getchar()

    #include<stdio.h>
    void main()
    {
         char c;
         c=getchar();
         putchar(c);
         putchar(‘\n’);
    } 

1.2-1、格式输出

%d:以带符号的十进制形式输出整数
%o:以八进制无符号形式输出整数
%x:以十六进制无符号形式输出整数
%u:以无符号十进制形式输出整数
%c:以字符形式输出,只输出一个字符
%s:输出字符串
%f:以小数形式输出单,双精度数,隐含输出六位小数
%e:以指数形式输出实数
%g:选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0

1.2.1、d格式

1.%d: 按十进制整型数据的实际长度输出。
2.%md: m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
   例:  printf(″%4d,%4d″,a,b);
        若a=123,d=12345,则输出结果为
        12312345
3.%ld:输出长整型数据。
   例:  long a=135790/* 定义a为长整型变量*/
        printf(″%ld″,a);

1.2.2、o格式

1.输出的数值不带符号,符号位也一起作为八进制数的一部分输出。
  例:int a=-1;
      printf("%d,%o",a,a); 
      -1在内存单元中的存放形式(以补码形式存放)如下:
      1111111111111111
      输出为:
      -177777
2.不会输出带负号的八进制整数。对长整数(long型)可以
3.用“%lo”格式输出。还可以指定字段宽度,
  例:printf("%8o",a);
     输出为:  177777。                 (数字前有2个空格)

1.2.3、x格式

以十六进制数形式输出整数。同样不会出现负的十六进制数。
  例:int a=-;
       printf(″%x,%o,%d″,a,a,a); 
    输出结果为:
      ffff,177777,-
可以用“%lx”输出长整型数,也可以指定输出字段的宽度
  例: “%12x”

1.2.4、u格式

用来输出unsigned型数据.
  一个有符号整数(int型)也可以用%u格式输出
  一个unsigned型数据也可以用%d格式输出
  unsigned型数据也可用%o或%x格式输出

1.2.5、c格式

c格式符,用来输出一个字符,也可指定宽度用空格填充

1.2.6、s格式

1.%s,输出字符串
  例如:   printf(″%s″,″CHINA″)   输出字符串“CHINA”(不包括双引号)。 2.
%ms,输出的字符串占m列,若串长大于m,则全部输出,若串长小于m,则左补空格。 3.%-ms,若串长小于m,字符串向左靠,右补空格。 4.%m.ns,输出占m列,只取字符串中左端n个字符,输出在m列的右侧,左补空格。 5.%-m.ns,n个字符输出在m列的左侧,右补空格,若n〉m,m自动取n值。

1.2.7、f格式

1.%f。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出6位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为7位
2.%m.nf。指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格
3.%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格

1.2.8、e格式

1.%e。不指定输出数据所占的宽度和数字部分的小数位数.
  例:
   printf(″%e″,123456);
  输出:
     234560 e+002
  所输出的实数共占13列宽度。(注:不同系统的规定略有不同)
2.%m.ne和%-m.ne。 m、n和“-”字符的含义与前相同
   此处n指拟输出的数据的小数部分(又称尾数)的小数位数
   若f=123456,则:
  printf("%e  %10e  %10.2e  %.2e  %-10.2e",f,f,f,f,f); 
  输出如下:
  1.234560e+002  1.234560e+002  1.23e+002  1.23e+002  1.23e+002
    13列            13列           10列        9列        10列

1.2.9、g格式

根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。
  例:若f=123468,则
  printf(″%f   %e   %g″,f,f,f);
  输出如下:
  123.468000  1.234680e+002  123.468    
     10列         13列        10列

1.2-2、格式输入

按照变量在内存的地址将变量值存进去

#include<stdio.h>
void main()
{
    int a,b,c;
    scanf(“%d%d%d”,&a,&b,&c);
    printf(“%d,%d,%d\n”,a,b,c);
}

说明:

1.对unsigned型变量所需要的数据,可以用%u,%d或%o,%x格式输入
2.可以指定输入数据所占的列数,系统自动按它截取所需数据
3.如果在%后有一个“*”附加说明符,表示跳过它指定的列数
4.输入数据时不能规定精度

注意:

(1)scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名
(2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符
(3) 在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入 
(4) 在输入数据时,遇以下情况时认为该数据结束
   ① 遇空格,或按“回车”或“跳格”(Tab)键;
   ② 按指定的宽度结束,如“%3d”,只取3列;
   ③ 遇非法输入

 1.3 字符串输入输出

字符数组的输入输出可以有两种方法:
1. 逐个字符输入输出。用格式符“%c”输入或输出一个字符。
2. 将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出
用puts函数输出的字符串中可以包含转义字符
char str[]={″China\nBeijing″};
puts(str);
gets(字符数组) 其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。
 gets(str) 等待键盘录入:

注意:scanf不能接受空格、回车、制表符Tab,而gets可以接受。相同点:字符串接受结束后自动添加‘\0’

 

posted @ 2014-12-01 13:57  W&L  阅读(746)  评论(0编辑  收藏  举报