鱼C论坛

 找回密码
 立即注册
查看: 2484|回复: 3

源码求解释,看不懂

[复制链接]
发表于 2011-10-13 20:12:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 surongre 于 2011-10-13 20:14 编辑
  1. #include <stdio.h>
  2. #define MAXLINE 1000 /*最大输入行长度*/

  3. int getline(char line[],int max);
  4. int strindex(char source[],char searchfor[]);

  5. char pattern[] = "ould"; /*待查找的模式*/

  6. main()
  7. {
  8. char line[MAXLINE];
  9. int found = 0;

  10. while(getline(line,MAXLINE)>0)                              /*这个也不怎么明白,为什么要>0?*/
  11. if(strindex(line,pattern)>=0)                             /*同上,为什么要>=0?*/
  12. {
  13. printf("%s",line);
  14. }
  15. return found;                                               /*不明白为什么要返回found*/
  16. }

  17. int getline(char s[],int lim)                            /*看不懂这段函数*/
  18. {
  19. int c,i;
  20. i = 0;
  21. while(--lim> 0&& (c=getchar()) !=EOF && c!='\n')                     /*为什么lim前面要加--?*/
  22. s[i++];
  23. if(c == '\n')
  24. s[i++] = c;
  25. s[i] = '\n';
  26. return i;
  27. }

  28. /*strindex函数:返回t在s中的位置,若未找到则返回-1*/
  29. int strindex(char s[],char t[])
  30. {
  31. int i,j,k;

  32. for(i = 0;s[i]!='\0';i++)
  33. {
  34. for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++)
  35. ;
  36. if(k>0&& t[k] == '\0')
  37. return i;
  38. }
  39. return -1;
  40. }
复制代码
上面的例子是The C programming language第58页的例子,讲到是把输入中包含特定‘模式’或字符串的各行打印出来.
但是我实在看不懂例子,所以发上来求解释。。。。。。。

另外为什么我的VC6,ctrl+z不能输出EOF?而vs2010可以...........

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-13 20:50:21 | 显示全部楼层
楼主你C学完了吗?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-14 09:09:49 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-14 09:17:26 | 显示全部楼层
surongre 发表于 2011-10-14 09:09
还没呢,就是看不懂才发上来请教

学完函数、字符串处理。。就差不多能看明白了。。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-8 23:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表