私は現在、C の有名な本である The C Programming Language, 2Ed を勉強しています。そして、P.29 のコードを試してみると、getline 関数に何か問題があると思います。
int getline(char s[], int lim) {
    int c, i;
    for (i=0; i<lim-1 && (c=getchar()) != EOF && c!='\n'; i++)
        s[i] = c;
    if (c == '\n') {
        s[i] = c;
        i++;
    }
    s[i] = '\0';
    return i;
}
for ループが終了したとき、i == lim-1そしてc == '\n'? s[lim]この場合、 「\0」に設定されるため、配列は境界外になると思います。
これは間違っていると思う人はいますか?ご協力いただきありがとうございます。