模拟strlen函数:可数出输入的汉字、字母的个数

 1 #include<stdio.h>
 2 #define MAX 200
 3     int main()
 4     {
 5         char str[MAX];
 6         char *target=str;    //str是一个右值,只存了一个常量地址,不能做运算,所以要把地址赋值给一个指针 
 7         int length=0;
 8         char ch;
 9         
10         printf("请输入字符串:");
11         fgets(str,MAX,stdin);
12         
13         while(1)
14         {
15             ch=*target++;     //若用*target来做下面的运算,则后面的target值就会+1,造成前后的target值不同,所以用char变量储存 
16             if(ch=='\0')
17             {
18                 break;
19             }
20             if((int)ch<0)
21             {
22                 target+=1;                 //第一次写时,写成*target+=1; 应让地址+1而非元素 
23             }
24             length++;
25         }
26         printf("一共有%d个字符",length-1);   //fgets函数把换行符“\n”也存入数组 所以此时应-1 
27         return 0;
28     } 

  

  思路:建立一个str字符串数组,将数组的第一个元素交给一个指针变量,再用一个for循环遍历字符串数组,若有值(强制转换为int后)<0,则判定是一个汉字(因为一个汉字的ASCII码为2位负数(64位系统下)),就将指针后移一位,指向新的元素地址。

           

 

  

posted @ 2017-02-06 20:14  早发现早治疗  阅读(121)  评论(0)    收藏  举报