dynamicstringinput – 使用scanf(“%as”)
我试图读取input使用scanf
和存储到char *
dynamic按照GCC手册指定 ,但它给编译时间错误。
char *string; if (scanf ("%as",&string) != 1){ //some code } else{ printf("%s\n", *string); free(string); //some code }
如果使用-std=c99
标志进行编译,则scanf a
修饰符将不起作用; 确保你没有使用它。
如果你至less有2.7版本的glibc,你可以并且应该使用m
修饰符代替a
。
另外,您有责任释放缓冲区。
你有GNU扩展启用? 标准C根本没有修饰符。
我对GCC的经验有限,但是我从来没有见过scanf
的%a
修饰符。 你有没有尝试在你提供的第三行中用%s
replace%a
?
如果启用了-ansi
或-std=c89
标志,则使用scanf("%as")
“Dynamic String Input”将会起作用。
使用gcc -ansi
编译
否则,你可以使用scanf("%ms")