程序可以看做是变量定义和函数定义的集合,函数之间的通信可以使用参数、函数返回值、和外部变量。
函数执行完成后会退出当前函数返回到调用函数中。然后就是编译了。。。
4.1中的例子是一个相对来说较为简单的多个函数组成的程序。
还得补充一下,这本书刚开始并没有强调设计的重要性。其实先定义程序目的,然后设计程序是很重要的(这点也是我再看另一本书的时候感觉到的)。
首先用getline函数获取当前行长度信息判断长度是否大于0(即是否存在这样的行)。
while(getline(line, MAXLINE) >0)
然后调用strindex函数用上面已经读取的行line与当前已经给定的字符串去做对比,
strindex函数下面再看,先将主函数的大概框架看明白。
strindex的返回值只有两种负数和非负数,所以只要判断其返回值是否是非负数即可。
if(strindex (line, pettren) >= 0)
然后如果判断为真则打印当前line整行。
printf(“%s”, line);
最后这个应该是记录一共找到了几行存在给定值的行。
found++;
返回给系统found的值
return found;
这个getline函数与第一张的没什么大的区别。
循环读取输入的文本字符,直到换行符‘\n’为止结束读入。并且不能超出规定的最大值。
while (--lim > 0 && (c = getchar()) != EOF && c != '\n')
s[i++] = c;
strindex函数也不算太难,思路就是先用t数组第一个元素与s数组的每个字符去对比,然后如果找到了与第一个元素相同的字符,那么久继续向后判断第二个。知道t数组到‘\0’为止。
循环递增数组下标。
for (i = 0; s[i] != '\0'; i++)
然后判断给定的字符串是否在数组s中,用变量k记录是否到数组t的末尾。
for(j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++, k++)
然后判断t[k]是否为‘|0’,因为如果是‘\0’就证明判断到最后都匹配。
if(k > 0 && c[k] == '\0')
如果上面的表达式成立则返回i也就是出现在数组s中的位置。
return i;
网友评论