一道C语言题 知道解答过程 看不懂 求解释 我 初学 麻烦解释清楚点 谢谢

函数fun的功能是将从键盘输入的多个英文单词(各单词用空格分隔)中每个单词的第一个字母转换为大写。请编写fun函数和测试用的主函数。
答案如下:
#include<stdio.h>
void fun(char *);
void main()
{ char s[80];
gets(s);
fun(s); //正确调用函数5分
puts(s);
}
void fun(char * s) //正确写出函数头5分
{ while(*s==' ') //正确跳过所有的前导空格5分
s++;
*s=(*s>='a'&&*s<='z')?*s-32:*s; //正确将第一个单词首字母转换为大写5分
while(*s) //正确取出字符串中所有字符5分
if(*s++==' '&& *s!=' ') //正确判断单词首字符5分
*s=(*s>='a'&&*s<='z')?*s-32:*s;
}
其中if(*s++==' '&& *s!=' ')这个判断语句*s++与*s的值为什么会不等?
我是C语言初学者,麻烦解释清楚一点 谢谢

你好!
先说明一下,s是不能指向字符串的,只能指向字符串的首字符。
说一下s++ 和 ++s的区别:s++ 是使用了s再递增,++s是递增后使用。
在这里,先判断*p是否是空格,判断结束后*p递增(即指向下一个字符),这时的*p已经是指向前面的*p后面的位置了,可以看似一辆开动的车,然后再判断是否是空格。
谢谢!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-10
s++是先赋值再自加 如:
int s=1;
s=s++;
运行后:
s=1;
但下一次接受S就不是等于1了 等于2了 赋值之后自加了
所以 s++和s不相等
第2个回答  2011-01-11
假设s指向字符串" word"
语句if(*s++==' '&& *s!=' ')
第一个s指向" word",此时*s=' '(空格)
然后s++,s指向"word",此时*s='w'
第3个回答  2011-01-11
lz的这句if(*s++==' '&& *s!=' ')的意思是:先看*s的值是不是=空格,如果=就再把s++使其指向下一位,再看*s的值是不是=空格,如果不=空格就说明条件成立了
相似回答