私はついにK&Rを終了しましたが、さらに別の不明確なコードに遭遇しました。6.3/6.4章
getwordを参照しています。どうすればintを返すことができ、それは単語であると思われます。最初の文字であるword[0]を返すことを理解しています。しかし、私の意見では、単語を返したい場合は、char*getwordのようなものを紹介します。私は正しいですか?
それが単語であることをどのように示すことができますか?まだgetwordについて:「in」と入力し、スペースの後にEnterキーを押したとします。getwordはスペースではないので'i'を読み取り、isalphaなので、最初のifは省略されます。それではどうなりますか?
binsearchで行をマークしました。あなたはそれが高くあるべきだと思いませんか=中程度-1; そこの?
int getword(char *word, int lim) {
char *w = word;
int c;
while (isspace(c = getch()))
{}
if (c != EOF) {
*w++ = c;
}
if (!isalpha(c)) {
*w = '\0';
return c;
}
for ( ; --lim > 0; w++) {
if (!isalnum(*w = getch())) {
ungetch(*w);
break;
}
}
*w = '\0';
return word[0];
}
/* binsearch: find word in tab[0]...tab[n-1] */
struct key *binsearch(char *word, struck key *tab, int n)
{
int cond;
struct key *low = &tab[0];
struct key *high = &tab[n];
struct key *mid;
while (low < high) {
mid = low + (high-low) / 2;
if ((cond = strcmp(word, mid->word)) < 0)
high = mid; /* [3] */
else if (cond > 0)
low = mid + 1;
else
return mid;
}
return NULL;
}