创建一个函数,使用C中的scanf向用户提问



我对C很陌生,但我正在尝试制作一个函数,用scanf向用户提问,任何关于如何处理的建议,这就是我目前所拥有的。

#include <stdio.h>
char name[100];
int num, days;
int askQ(char *question, char *x, char *answer) {
printf("%s", question);
fflush(stdout);
scanf(x,&answer);
return 1;
}
int main() {
askQ("hello? | ", "%sn", &name);
printf("%s", name);
return 0;
}

有几件事让这件事有点棘手。您对任意格式字符串的要求使得很难知道如何将参数传递给scanf()。例如,int参数需要将接收变量的地址传递给scanf(),而字符串不需要地址,因为";字符串";已经是一个指针。

类似地,您应该检查scanf()的返回值,以确保输入按预期处理——这对于任意格式的字符串来说都很难。

也许,如果您真的需要任意输入解析,您可以使用vscanf(),但在您的级别上,我不建议这样做。

如果你选择保持简单,这样你就可以得到一个带有单个字符串响应的提示,那么你可以这样做:

#include <stdio.h>
int askQ(char *question, char *format, char *answer) {
printf("%s", question);
int i = scanf(format, answer);
return i == 1;
}
int main() {
char name[100];    // accept up to 100 chars input
if (askQ("hello? | ", "%s", name))
printf("Response: %sn", name);
else
printf("Failed to get valid response from usern");
}

最新更新