[ 指针 ] 关于统计字符串里的各种元素--------很不理解一个细节~
#include "stdio.h"
#include "stdlib.h"
int main()
{
int Word=0,word=0,space=0,number=0,others=0;
char *p;
int i;
p=(char *)malloc(sizeof(char)*50);
if(p==NULL) return 0;
printf("请输入一段文字:");
scanf("%s",p); /* 朋友说要用getchar()完成输入, 为什么呢? 很费解? 百度看不懂*/
for(i=0;*(p+i)!='\0';i++)
{
if((*(p+i)>='A')&&(*(p+i)<='Z'))
Word++;
else if((*(p+i)>='a')&&(*(p+i)<='z'))
word++;
else if((*(p+i)>='0')&&(*(p+i)<='9'))
number++;
else if((*(p+i)==32)) /* 判断条件没错吧,为什么就是space始终是初始化的结果*/
space++;
else
others++; /* 这个很调皮,输入的时候有时候突然能统计上,突然就统计不上了*/
}
printf("%d\n%d\n%d\n%d\n%d\n",Word,word,space,number,others);
free(p);
return 0;
}
需要大神细心的调教~ 真心接受调教~~
#include "stdlib.h"
int main()
{
int Word=0,word=0,space=0,number=0,others=0;
char *p;
int i;
p=(char *)malloc(sizeof(char)*50);
if(p==NULL) return 0;
printf("请输入一段文字:");
scanf("%s",p); /* 朋友说要用getchar()完成输入, 为什么呢? 很费解? 百度看不懂*/
for(i=0;*(p+i)!='\0';i++)
{
if((*(p+i)>='A')&&(*(p+i)<='Z'))
Word++;
else if((*(p+i)>='a')&&(*(p+i)<='z'))
word++;
else if((*(p+i)>='0')&&(*(p+i)<='9'))
number++;
else if((*(p+i)==32)) /* 判断条件没错吧,为什么就是space始终是初始化的结果*/
space++;
else
others++; /* 这个很调皮,输入的时候有时候突然能统计上,突然就统计不上了*/
}
printf("%d\n%d\n%d\n%d\n%d\n",Word,word,space,number,others);
free(p);
return 0;
}