次の C コードの何が問題になっていますか? (更新しました)
int nfds = 0;
char c[2] = " ";
char ans[2] = " ";
printf("Test p or s [p,s]: p? ");
ans[0] = (char)getchar();
if (ans[0] != '\n')
{
ans[1] = '\0';
printf("ans = %s\n", ans);
}
else
ans[0] = '\0';
/* FIXME: answering 's' -> nfds is never read */
printf ("Choose [0, 1, 2, 3]: 0? ");
c[0] = (char)getchar();
if (c[0] != '\n')
{
c[1] = '\0';
nfds = strtol(c, NULL, 10);
}
else
c[0] = '\0'
printf( "nfds=%d\n", nfds);
「return」と答えると機能しますが、「s + return」と答えると、print(「Choose ...」) で止まらず、「return」が既に与えられているかのように続行しますか?
おそらくより良い解決策は次のとおりです。最初に char/string を読み取りans
ます。デフォルト: "return"
char/string='s'/"s" で次の質問をして整数を読み取りnfds
ます。デフォルト:"return"