9

GCCマニュアルで指定されているように、動的に入力を使用scanfして保存しようとしていますが、コンパイル時にエラーが発生しています。char *

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

4 に答える 4

10

フラグを使用してコンパイルしている場合、 scanfへのa修飾子は機能しません。それを使用していないことを確認してください。-std=c99

少なくともバージョン 2.7 の glibc を使用している場合はm、 の代わりに修飾子を使用できますし、使用する必要がありaます。

また、バッファを解放するのはあなたの責任です。

于 2010-02-24T22:28:28.523 に答える
1

またはフラグが有効なscanf("%as")場合、「動的文字列入力」が機能します。 を使用してコンパイル-ansi-std=c89
gcc -ansi

または、他の方法で使用できますscanf("%ms")

于 2010-02-24T22:26:13.817 に答える
1

GNU 拡張機能を有効にしていますか? a標準 C には修飾子がまったくありません。

于 2010-02-24T22:03:07.567 に答える
0

GCCの使用経験は限られていますが、の%a修飾子は見たことがありませんscanf%a提供した3行目のをに置き換えてみました%sか?

于 2010-02-24T22:02:45.383 に答える