[英]Return value from C function call?
我目前正在阅读Kernighan和Ritchie的The C Programming Language ,遇到了我不太了解的内容。 在第4.1章中,提到了仅打印包含某些模式的某些行:
#include <stdio.h>
#define MAXLINE 1000
int getlin(char line[], int max); /* getline() used in standard library */
int strindex(char source[], char searchfor[]);
char pattern[] = "ould";
int main()
{
char line[MAXLINE];
int found = 0;
while (getlin(line, MAXLINE) > 0)
if (strindex(line, pattern) >= 0) {
printf("%s", line);
found++;
}
return found;
}
int getlin(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;
}
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;
}
抱歉,我知道很长,但是相对简单。 我唯一的问题是在第9行while (getlin(line, MAXLINE) > 0)
。 我不清楚这是否指向函数返回的i
或实际的int getlin()
本身,在这种情况下,while循环将如何停止,或者更好的问题可能是它的值在哪里被修改了。
while (getlin(line, MAXLINE) > 0)
此代码执行getlin()
函数并检查其返回值。 如果返回值为正,则循环继续,否则循环退出。
getlin()
似乎返回读取的行的长度(字符数),如果已到达文件末尾,则返回零。 因此,循环将继续读取行,直到没有更多行要读取为止。
该行将执行getlin
方法并检查返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.