繁体   English   中英

动态字符串输入 - 使用scanf(“%as”)

[英]Dynamic String Input - using scanf(“%as”)

我正在尝试使用scanf读取输入并按照GCC手册的规定动态存储到char * ,但它给出了编译时错误。

  char *string;
  if (scanf ("%as",&string) != 1){
    //some code
  }
  else{
   printf("%s\n", *string);
   free(string);
   //some code
  }

如果使用-std=c99标志进行编译,则scanf a修饰符将不起作用; 确保你没有使用它。

如果你的glibc版本至少为2.7,你可以而且应该使用m修饰符代替a

此外,您有责任释放缓冲区。

你启用了GNU扩展吗? 标准C没有a修改的。

我对GCC的经验有限,但我从来没有见过scanf %a修饰符%a 您是否尝试在您提供的第三行中将%a替换为%a %s

如果启用了-ansi-std=c89标志,则带有scanf("%as") “动态字符串输入”将起作用。
使用gcc -ansi编译

否则你可以使用scanf("%ms")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM