c - "scanf with printf"与 "fgets with printf"

标签 c printf scanf fgets

我知道使用 scanffgets 的区别和优点/缺点。

我不明白 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;
}

如果我使用 fgetsprintf 会在标准输出上正确打印结果;

如果我使用 scanfprintf` 不会在标准输出上打印任何内容。

为什么会出现这种行为?

最佳答案

您使用了 scanf("%s", &choice);char ** 传递给 scanf() 当它需要一个char *.

删除 &

如果您的编译器没有报错,则说明您没有打开足够多的警告,或者您需要更好的编译器。

关于c - "scanf with printf"与 "fgets with printf",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21287232/

相关文章:

c - 如何在 C 中交换一行中的两个变量?

c - 在整数用户输入中输入字符不会返回错误,而是将其转换为整数?

使用 pthread.h 进行多线程 C 编程

delphi - Delphi中是否有*SysUtils.Format*的反函数

c - 无法在 Eclipse linux 中调试代码错误无法找到源 malloc.c

c++ - printf %g 和 %f 之间的零填充差异

c - 使用 fprintf() 在 C 中写入文本文件

c - 十进制转十六进制 : issues with sprintf?

c - scanf 和 fgets 的问题

c - fscanf 没有正确读取文件 ~ 读取 HEX 格式字节的问题