字符处理

1.字符输入输出

int getchar();int putchar(int);

2.常用字符处理库函数

int isalnum(int ch)    
int isalpha(int ch)int iscntrl(int ch)int isdigit(int ch) 
int isgraph(int ch) 
int islower(int ch)int isupper(int ch)int isprint(int ch)int ispunct(int ch)int isxdigit(int ch)int toupper(int ch)int tolower(int ch)int isspace(int ch)

3.统计一句话中单词数量

#include#include int main(void)
{ 
     int num=0;  /* 单词个数 */
     int space=1; /* 是否空格的标志,是空格为1,不是为0 */
     char ch;     while((ch=getchar())!=‘\n’) {         if(isspace(ch)) 
                 space=1;         else{  /* 当前字符为非空格 */
                 if(space) 
                 num++;  /* 前一个字符是空格, 表示新单词开始,单词个数增1 */
                 space=0;   /* 当前字符为非空格,space赋为0 */
         }
      }
      printf(“There are %d words in the line.\n”,num);      return 0;
}

字符数组与字符串

1.字符数组的初始化

  • C语言中有字符串常量,但没有字符串类型说明符,也没有对应的字符串变量。但可以利用一维字符型数组表示与处理字符串;
  • C语言的字符串必须以字符‘\0’作为字符串结束标志;
  • 计算字符串长度时并不包括‘\0’;
  • 当用字符数组存储字符串时,字符数组内必须存放字符串结束标志‘\0’,应保证定义的字符数组长度大于字符串的实际长度;
  • 如果初始化时数组的长度比字符串长度大,后面多余的元素用’\0’填充。
char str[ ]={ ‘I’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘h’, ‘a’, ‘p’, ‘p’, ‘y’, ‘\0’};char str[ ]="I am Happy";

2.字符型指针变量

  • 可以用字符型指针变量指向一个字符串;

  • 字符型指针变量即基类型为字符类型的指针变量;

char sarray[10],ch=’A’ ,*string;string=&ch;                     /*字符变量的地址*/string=sarray;                  /*字符数组名*/string=“I love China!”;        /*字符串常量*/
  • 若声明了一个指针变量且使它指向一个字符串后,可以用下标形式引用指针变量所指向的字符串中的字符;
    char sarray[20]= “I love China!”;/*把字符串的各个字符顺序存储到数组sarray的每个元素中*/

    char  *string=“I love China!”;/*把存放“I love China!”存储空间的首地址存储到指针变量string中,使其指向字符串“I love China!” */
  • 字符数组有确定大小的存储空间,由若干个元素组成,每个元素中放一个具体的字符,分配给字符指针变量的存储空间只能存放一个地址;

  • 数组名代表分配给数组的存储空间的首地址,是一个确定的不可以改变的地址常量;指针变量的值是可以改变的。
char  sarray[ ]=“I love China!”;    
sarray=sarray+7;    /* 错误 */char  * string=“I love China!”;string=string+7;    /* 正确*/
  • 只能对字符数组的各个元素赋值,不能对字符数组整体赋值;
char sarray[20] , * string;
sarray=“I love China!”   /*错误*/string=“I love China!”;   /*正确*/
  • 数组与数组的每个元素都有确定的地址,可以直接用于存储字符或字符串。字符指针变量,开始时该存储单元内的值并不确定,不能直接使用。
char sarray[20];    sarray[1]= ‘a’;        /* 正确 */char * string;         string[1]= ‘a’;        /* 错误 */char *string, str[10]; string=str;    string[1]= ‘a’;         /* 正确 */

3.字符串输入输出

  • gets(str)从标准输入流中读取字符串,将读入的结果存放到字符指针变量str指向的的储存空间中,直到‘\n’为止,将‘\n’转换成'\0'作为读入字符串的结束标志。读入成功返回字符串存放的起始地址,失败则返回空指针NULL。
  • 调用scanf利用%s读入字符串,直到遇到空格、Tab、回车为止,在已读入的字符后加上‘\0’作为读入字符串结束的标志。
  • puts(str)把str所指的字符串送到标准输出流中,遇到‘\0’输出停止,并把‘\0’转换成‘\n’输出,输出成功返回回车字符,失败返回EOF。
  • 调用printf利用%s输出字符串,遇到‘\0’为止,'\0'不输出,其后的内容不输出。

4.字符串处理函数

(更新中……)