| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2066 人关注过本帖
标题:The C Programming Language 第二版,第四章原代码编译后无法实现作者的意图 ...
只看楼主 加入收藏
juyou1689
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
The C Programming Language 第二版,第四章原代码编译后无法实现作者的意图,及相关问题
菜鸟一个,刚刚学c,在看The C Programming Language 第二版,
想通过作者提供的例子,更好的理解,结果第四章的例子完全实现不了作者
的意图,找了3个版本的书参考,都没有办法理解,百度也没有答案   
1,main函数里面的found 是干吗用的?看着是一个计数器,但是作为return 的
返回值,就没有做其他用了,没见过这种用法,查了资料,返回给系统一个不是0
的值,就是异常?告诉系统这个程序是异常的?  
2,作者原意是输入一段字符串,然后程序可以把含有“ould”的行打印出来,
但是这个getline()里面有一个判断,c != '\n',如果换行getline()就终止了,
接着就打印出来了,就无法像作者表述的那样,输入多行,然后筛选出需要的行
3,我想如果真的要实现作者的意图,是不是要改?strindex()筛选出来以后,另外保存,EOF以后再打印,才能够实现作者的想法?  
菜鸟一个,多多指教,谢谢各路大神!
```#include <stdio.h>
#define MAXLINE 1000 /* 最大输入行长度 */
int getline(char line[], int max)
int strindex(char source[], char searchfor[]);
char pattern[] = "ould"; /* 比较的字符串 */
/* find all lines matching pattern */
main()
{
char line[MAXLINE];
int found = 0;/*这个是干嘛用的?*/
while (getline(line, MAXLINE) > 0)
                    if (strindex(line, pattern) >= 0) {
                    printf("%s", line);
                    found++;
                }
return found;
}
/* getline: 输入行,返回长度*/
int getline(char s[], int lim)
{
int c, i;
i = 0;
while (--lim > 0 && (c=getchar()) != EOF && c != '\n')/*这里判断有回车
就执行下面的操作了,不可能输入多行,实际测试就是回车就开始打印*/
         s[i++] = c;
if (c == '\n')
         s[i++] = c;
         s[i] = '\0';
return i;
}
/* strindex: 比较字符串,如果有就返回i,没有就返回没有*/
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;
}
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2019-6-30 16:34编辑过]

搜索更多相关主题的帖子: 作者 return line int char 
2019-06-30 16:32
juyou1689
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-14
收藏
得分:0 
如果要改的话,是不是另外建一个数组,通过先保存筛选出来的字符串,最后统一打印就可以了?
2019-06-30 16:39
juyou1689
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-14
收藏
得分:0 
谢各位大神赐教
2019-06-30 16:40
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:10 
found就是个计数,好像没用

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2019-06-30 16:52
juyou1689
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-14
收藏
得分:0 
我也是看了半天不知道做什么用的,刚刚学,想着大神不可能搞一个没用的东西在代码里面,但找了资料又无解
2019-06-30 17:07
juyou1689
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-14
收藏
得分:0 
回复 4楼 zhulei1978
也是看了半天不知道做什么用的,刚刚学,想着大神不可能搞一个没用的东西在代码里面,但找了资料又无解
2019-06-30 17:11
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:10 
说实话,这本书不适合新手读,我之前读过,读不下去了就换成《C prime plus》第六版,进阶的时候可以看下,不要被网上的推荐给迷糊了。

借用一下侯捷的话:勿在浮沙筑高台。
2019-06-30 22:20
快速回复:The C Programming Language 第二版,第四章原代码编译后无法实现作者 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.394820 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved