[英]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.