模拟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位系统下)),就将指针后移一位,指向新的元素地址。



浙公网安备 33010602011771号