回复 9楼 pgy
#include <stdio.h>
#define n 20
void main()
{int
letter,digit,space,other,i;
char a[n],*p;
p=a;
letter=0;
digit=0;
space=0;
other=0;
printf("enter str a[%d]=",n);
for(i=0;i<n;i++)
scanf
("%c",&(*(p+i)));
这个输入一个字符,对应的是&a[i]是对的吧,因为前面我让*p=a,指针指向的是数组a的首地址。这里*(p+i)以后指向的已经不是数组a的首地址了么?那么*p+i是不是才是指向a数组首地址?
while(*p!='\n')
{if((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z'))
letter++;
else if(*p>='0'&&*p<='9')
digit++;
else if(*p==' ')
space++;
else other++;
p++;}
p=a;
printf("while str a[n]=
%s\n",*p); 那么上面我改回来以后,让指针p再指向数组a的首地址,那么我这里用输出字符串错了么? 难道一定要用一个for循环一个个的输出*(p+i)吗?
printf("letter=d%,digit=%d,space=%d,other=%d\n",letter,digit,space,other);
getch();
}
请指点下我的疑问。