問題空間のために:カスタムのgetline()実装 - whileループ内の
は、どのようにそれがあるwhile ((len = _getline(line, MAXLEN)) > 0)
は_getline(...)
増分内部i
になるだろうということが、押されenter key
まで結果を印刷していませんか?
コード例:
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
int _getline(char s[], int max)
{
int c, i, l;
for (i = 0, l = 0; (c = getchar()) != EOF && c != '\n'; ++i) {
printf("%d\n", i);
if (i < max - 1) {
s[l++] = c;
}
}
if (c == '\n' && l < max - 1)
s[l++] = c;
s[l] = '\0';
return l;
}
int main()
{
int len;
char line[MAXLEN];
while ((len = _getline(line, MAXLEN)) > 0)
;
return 0;
}
これは 'for 'ループ内に' c!=' \ n "があるからです。そうでなければ' forループ 'は' c!= '\ n''が内部で実行し続けるでしょう。その時点で、プログラムは次の行に移動しますか? – dud3
カスタム 'getline'が' max'に達した後に文字を読み続けるのはなぜですか? –
ファイルレベルでは、アンダースコアで始まる名前は実装用に予約されています。アプリケーションコードで使用してはいけません。 – Olaf