我正在尝试使用GCC 手册指定的动态scanf
读取输入和存储,但它给出了编译时错误。char *
char *string;
if (scanf ("%as",&string) != 1){
//some code
}
else{
printf("%s\n", *string);
free(string);
//some code
}
我正在尝试使用GCC 手册指定的动态scanf
读取输入和存储,但它给出了编译时错误。char *
char *string;
if (scanf ("%as",&string) != 1){
//some code
}
else{
printf("%s\n", *string);
free(string);
//some code
}
如果您使用标志进行编译, scanf的a
修饰符将不起作用;确保你没有使用它。-std=c99
如果您至少有 2.7 版的 glibc,则可以并且应该使用m
修饰符代替a
.
此外,释放缓冲区是您的责任。
您是否启用了 GNU 扩展?标准 C 根本没有a
修饰符。
如果启用了or标志,“动态字符串输入”scanf("%as")
将起作用。
编译使用-ansi
-std=c89
gcc -ansi
否则你可以使用scanf("%ms")
我在 GCC 方面的经验有限,但我从未%a
见过scanf
. 您是否尝试过在您提供的第三行中替换%a
为%s
?