#include
#include
#include
int main(void)
{
char str[81];
char *p, temp;
int i, n, length;
gets(str);
for(p = str, i = 0, n = strlen(str); i < n/2; i++)
{
temp = *(p + n - 1 - i);
*(p + n - 1 - i) = *(p + i);
*(p + i) = temp;
}
puts(str);
p = str;
length = 0;
do
{
if(isalpha(*p))
length++;
else
{
if(length > 1)
{
for(i = 0; i < length/2; i++)
{
temp = *(p - 1 - i);
*(p - 1 - i) = *(p - length + i);
*(p - length +i) = temp;
}
}
length = 0;
}
}
while(*p++ != '\0');
puts(str);
return 0;
}
char p定义了一个指针,p代表地址,是一种运算符,*p访问存储的数据,与取地址符&相反
char* p,*是一种运算符
这段代码的作用是颠倒字符串,颠倒字符串的方法是第一个和最后一个交换,第二个和倒数第二个交换。
字符串的下标是0 ~ n-1
所以第 i 个应该和第 n - i - i 交换。
因为你的字符串是从0开始的啊,如果当i=0时,当然是和最后一个n-1-0位置上的字符进行交换啊