#include
#define N 81
void main()
{
char str[N],*string=str,*p=string;
int k;
printf("输入一个字符串:\n");
gets(string);
while(*p!='\0')
if(*p!='\n')
p++;
k=p-string;
printf("字符串长度%d\n",k);
}
if(*p!='\n')
请问这行代码的作用是啥
当前p不指向换行符,
下面是我的理解,
因为char *p; 是输入字符串的格式,
'\n' 是换行符的转义字符,也就是我们通常所说的换行。
if(*p!='\n')的意思你也就可以理解成,当你输入字符串的时候,你不按下enter你就可以一直输入,如果按下就进入if的那个循环。
根据上面内容 p =string,所以
gets(string) 就是输入p。
如果字符是\0就结束循环,
而字符不是换行才执行p++
很显然,除非字符串里本身就不包含换行符
否则这就是个死循环
不要看到网上的博客就觉得他们说的都是对的,博客谁都可以写
if(*p!='\n') 这句在这里是多余的,存在潜在的隐患。