在 C 中使用 scanf 创建一个函数来向用户提问
Creating a function to ask question from the user using scanf in C
我是 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? | ", "%s\n", &name);
printf("%s", name);
return 0;
}
有几件事使这有点棘手。您对任意格式字符串的要求使得很难知道如何将参数传递给 scanf()
。例如。 int 参数将要求您将接收变量的地址传递给 scanf()
,而字符串不需要地址,因为“字符串”已经是一个指针。
同样,您应该检查 scanf()
中的 return 值,以确保按预期处理输入 - 这对于任意格式字符串来说很难。
也许,如果你真的需要任意输入解析,你可以使用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: %s\n", name);
else
printf("Failed to get valid response from user\n");
}
我是 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? | ", "%s\n", &name);
printf("%s", name);
return 0;
}
有几件事使这有点棘手。您对任意格式字符串的要求使得很难知道如何将参数传递给 scanf()
。例如。 int 参数将要求您将接收变量的地址传递给 scanf()
,而字符串不需要地址,因为“字符串”已经是一个指针。
同样,您应该检查 scanf()
中的 return 值,以确保按预期处理输入 - 这对于任意格式字符串来说很难。
也许,如果你真的需要任意输入解析,你可以使用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: %s\n", name);
else
printf("Failed to get valid response from user\n");
}