C语言,输入一行文字,单词间以空格分隔,然后分离其中的单词按每行一个单词输出,程序有了,求解释

编程序,输入一行文字,单词间以一个或多个空格分隔,然后分离其中的单词,并按每行一个单词依次输出各单词。
#include <stdio.h>
void main( )
{ char s[81];
int i,j;
gets(s);
for(i=0;s[i];i++)
if(s[i]!=' ')
{ for(;s[i]&&s[i]!=' ';i++)
printf("%c",s[i]);
printf("\n");
i--;
}
}

从{ for(;s[i]&&s[i]!=' ';i++)开始就不懂了 高人帮忙指点一下后面几句什么意思 谢谢
{ for(;s[i]&&s[i]!=' ';i++)
printf("%c",s[i]);
printf("\n");
以上几句懂了 可是最后为什么要i--呢 这里又不懂了。。。

{ for(;s[i]&&s[i]!=' ';i++)使用循环逐个字母输出每一个空格后的单词,即:字符不为空格或结束符

遇到空格后就 printf("\n");换行,从新执行

for(i=0;s[i];i++)

if(s[i]!=' ')

{ for(;s[i]&&s[i]!=' ';i++)

printf("%c",s[i]);

printf("\n");

i--;}

直到结束

扩展资料

与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

参考资料来源:百度百科:c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
for循环的意思是,如果当前的字符不是字符串结束符'\0'也不是空格的时候就把这个字符打印到屏幕上,直到遇到空格表示打印完了一个单词了,这时候跳出循环打一个回车换行出来,准备开始打下一个单词,但是因为在for循环里i已经自加了,为了不错过下一个单词的第一个字符,所以要把i先减一,这样的话外面的大循环再执行i++的时候就不至于吧下一组单词的第一个字符给错过了。本回答被提问者采纳
第2个回答  2011-03-17
{ for(;s[i]&&s[i]!=' ';i++)使用循环逐个字母输出每一个空格后的单词,即:字符不为空格或结束符就逐个输出,
遇到空格后就 printf("\n");换行,从新执行
for(i=0;s[i];i++)
if(s[i]!=' ')
{ for(;s[i]&&s[i]!=' ';i++)
printf("%c",s[i]);
printf("\n");
i--;
}
知道结束