%s到底输出的是一个字符,一个字符串,还是一个单词??
#include <stdio.h>
#include <string.h>
char str[81];
int main()
{
int i, k;
char *p;
gets(str);
k = strlen(str);
printf("%d\n",k);
printf("%d\n",str);
p = str + k;
printf("%d\n",p);
printf("%s\n ",p);
while (1)
{
if ( p == str )
{
printf("%s\n", p);
break;
}
if (*p == ' ' && *(p+1) != ' ')
{
*p = '\0';
printf("%s ", p+1);
}
p--;
}
return 0;
}
这是一个输入一句话,输出反过来说的一段代码。如:
输入:What is your name
输出:name your is What
while语句里的第二个if是判断p有没有减小到一个完整的单词的,但是他输出%s的p+1之后输出了一整个单词,在例句中就相当于输出了name。为啥?
是不是%s会输出p+1及之后位置上所有的字符,并在\0处停止?如果是这样的话,就能解释的通了。
求学长学姐们讲解!