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修饰符。 你有没有尝试在你提供的第三行中用%sreplace%a

如果启用了-ansi-std=c89标志,则使用scanf("%as") “Dynamic String Input”将会起作用。
使用gcc -ansi编译

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