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
ます。
また、バッファを解放するのはあなたの責任です。
またはフラグが有効なscanf("%as")
場合、「動的文字列入力」が機能します。
を使用してコンパイル-ansi
-std=c89
gcc -ansi
または、他の方法で使用できますscanf("%ms")
GNU 拡張機能を有効にしていますか? a
標準 C には修飾子がまったくありません。
GCCの使用経験は限られていますが、の%a
修飾子は見たことがありませんscanf
。%a
提供した3行目のをに置き換えてみました%s
か?