字符串的输入输出
对字符串的输入输出可以采用格式化输入输出函数scanf( )、printf( ) (格式符用s或c)或getchar( )、putchar( )。
  1.逐个字符输入输出
  char a[10],b[7];
  for (k=0;k<10;k++)
  scanf ("%c",&a[k]);
  for (k=0;k<7;k++)
  b[k]=getchar( );
  for (k=0;a[k]!='\0';k++)
  printf ("%c",a[k]);
  for (k=0; a[k]!='\0';k++)
  putchar(a[k]);

  2.字符串整体或部分输入输出
  char a[10],b[7]="abcde";
  scanf ("%s",a); /* 键盘输入的字符串存入a数组 */
  printf("%s",a); /* 输出a数组中的字符串 */
  printf("%s",&b[1]); /* 输出b数组中从b[1]开始的字符串:bcde */
  注意:
  ① 用格式符s输入输出字符串,其输入(出)项必须以字符串的地址形式出现。
  上例中a是字符数组名,它代表该数组的首地址,所以不要在数组名前再加地址运算符。scanf("%s",&a);是错误的。若出现字符数组元素的地址,则表示输入(出)对象是从该地址开始的字符串。
  另外,输出项以字符串常量形式出现也是正确的,此时它表示其首地址。下列输出函数的功能是输出字符串"abcd"。
  printf("%s","abcd");
  ② 用格式符s输出字符串时,从输出项提供的地址开始输出,直到遇字符串结束符'\0'为止。
  若有:char b[3]="xyz",c='H',a[10]="abcd\0123";
  printf("b=%s\n", b);
  printf("a=%s\n", a);
  则输出:b=xyzHabcd
  a=abcd
  因为b数组长度为3,用"xyz"初始化,字符串结束符'\0'无法存储,输出xyz后未遇到'\0',于是接着输出后续存储单元c的内容H和a数组的内容abcd,直到遇'\0'停止输出。对a数组,输出abcd后,也是遇到'\0'后停止输出。
  ③ 用格式符s不能输入带空格、回车或跳格的字符串。因为空格、回车或跳格是输入数据的结束标志。
  Char a[10];
  scanf("%s",a);
  printf("%s\n",a);
  输入:How are you↙
  输出:How
  由于空格、跳格和回车均是输入数据结束的标志,所以How are you被看作3个输入数据,只把How作为a数组的数据。那么,如何输入带空格、回车或跳格的字符串?下面介绍的gets( )函数可以解决这个问题。

  3.用gets( )和puts( )函数输入输出字符串。
printf函数是如何实现的  由于gets( )和puts( )函数均在文件stdio.h中定义,因此要使用这两个函数,就必须在程序开头加上命令行:#include "stdio.h"。
  gets函数调用形式:
  gets(sadr);
  功能:从键盘读入字符串,直到读入换行符为止,用'\0'代替换行符并把读入的字符串存入以satr为首地址的存储区中。
  puts函数调用形式:
  puts(sadr);
  功能:把首地址为satr 的字符串显示在屏幕上,并换行。
  char a[15],b[20]="abcd\n1234";
  gets(a);
  puts(a);
  puts(b);
  输入:How are you↙ /* 用gets(a)函数可以输入含空格的字符串 */
  输出:How are you
  abcd /* 输出abcd后输出'\n'引起换行 */
  1234 /* 继续输出1234 并换行 */

  例8-3:将给定的字符串复制到另一字符串。
  用两个字符数组分别存放源字符串和目标字符串。复制时,一边读源字符串的字符,一边把该字符存入目标字符串,这个过程可以在一个循环中实现,循环结束的条件是遇到源字符串末尾的字符串结束符。
  #include"stdio.h"
  main( )
  { char s1[80],s2[80];
  int i;
  printf("input string s2:\n");
  gets(s2);
  for(i=0;s2[i]!='\0';i++)/* 逐个字符地复制 */
  s1[i]=s2[i];
  s1[i]='\0'; /* 在复制的字符串末尾加上字符串结束符 */
  puts(s1);
  }
  运行程序:
  input string s2:
  输入:Beijing↙
  输出:Beijing

  例8-4:求给定的字符串的长度。
  字符串的长度是指字符串中的字符个数,不包含字符串结束符。从第一个字符开始逐个字
符计数,直到遇上字符串结束符。
  #include"stdio.h"
  main( )
  { char s1[80];
   int i;
   printf("input string s1:\n");
   gets(s1);
   i=0;
   while(s1[i]!='\0') i++;/* 逐个字符计数 */
   printf("i=%d\n",i);
  }
  运行程序:
  input string s1:
  输入:Beijing↙
  输出:i=7