|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 surongre 于 2011-10-13 20:14 编辑
- #include <stdio.h>
- #define MAXLINE 1000 /*最大输入行长度*/
- int getline(char line[],int max);
- int strindex(char source[],char searchfor[]);
- char pattern[] = "ould"; /*待查找的模式*/
- main()
- {
- char line[MAXLINE];
- int found = 0;
- while(getline(line,MAXLINE)>0) /*这个也不怎么明白,为什么要>0?*/
- if(strindex(line,pattern)>=0) /*同上,为什么要>=0?*/
- {
- printf("%s",line);
- }
- return found; /*不明白为什么要返回found*/
- }
- int getline(char s[],int lim) /*看不懂这段函数*/
- {
- int c,i;
- i = 0;
- while(--lim> 0&& (c=getchar()) !=EOF && c!='\n') /*为什么lim前面要加--?*/
- s[i++];
- if(c == '\n')
- s[i++] = c;
- s[i] = '\n';
- return i;
- }
- /*strindex函数:返回t在s中的位置,若未找到则返回-1*/
- int strindex(char s[],char t[])
- {
- int i,j,k;
- for(i = 0;s[i]!='\0';i++)
- {
- for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++)
- ;
- if(k>0&& t[k] == '\0')
- return i;
- }
- return -1;
- }
复制代码 上面的例子是The C programming language第58页的例子,讲到是把输入中包含特定‘模式’或字符串的各行打印出来.
但是我实在看不懂例子,所以发上来求解释。。。。。。。
另外为什么我的VC6,ctrl+z不能输出EOF?而vs2010可以...........
|
|