我知道使用扫描和fget的不同之处和优势。
我不明白printf和这两个C标准函数之间的关系。
我有一个简单的代码:
void print_choice(char * list, char * choice)
{
/* check parameters */
if(!list || !choice)
return;
printf("list of users: %s\n", list);
printf("Choice -- ? ");
/* scanf("%s", &choice); */
/* fgets(choice, 20, stdin); */
}
int main()
{
char choice[20];
char * list = "marco:dario:roberto:franco";
print_choice(list, choice);
printf("choice = %s\n", choice);
return 0;
}如果使用fgets,则在stdout上正确地打印结果;
如果我使用scanf,printf` `不会在stdout上打印任何内容。
为什么会有这种行为?
发布于 2014-01-22 15:38:41
您使用的是scanf("%s", &choice);,它在char **需要char *时将char **传递给scanf()。
放下&。
如果您的编译器没有抱怨,您要么没有打开足够的警告,要么需要一个更好的编译器。
发布于 2014-01-22 15:38:43
变化
scanf("%s", &choice);至
scanf("%s", choice);发布于 2014-01-22 15:38:51
你必须用
scanf("%s", choice);而不是
scanf("%s", &choice);https://stackoverflow.com/questions/21287232
复制相似问题