繁体   English   中英

从C函数调用返回值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM