問題タブ [asprintf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - AIXでのasprintfの代替または回避策
AIXでpython-kerberosをビルドしようとしています。kerberospw.cはasprintfの呼び出しを使用しますが、Googleが私に言っていることから、asprintfはAIXには存在しません。
http://www.koders.com/c/fidAA9B130D588302673A28B568430A83131B7734C0.aspx?s=windows.hを見ましたが、これはスタンドインasprintfを作成できるように見えますが、これがどこに行くのか、どのように行うのかわかりません。 #kerberospw.cに含めます。
koders.comの例または他のコードを使用してasprintfを「偽造」する方法はありますか?kerberospw.cに示されているようにasprintf関数を含めることはできますか?私はCコーダーではありませんが、
asprintf(char ** resultp、const char * format、...)
末尾にドットが付いている私には、有効な署名のようには見えません。kerberospw.cからの関連行は以下のとおりです
asprintf(&message、"%。* s:%。* s"、(int)result_code_string.length、
(char *)result_code_string.data、
(int)result_string.length、
(char *)result_string.data);
python-kerberosの作成者に連絡できることはわかっていますが、a)パッチを適用すると役立つと思います。また、b)asprintfを使用する他のソフトウェアが存在する可能性があります。回避策があると便利です。
c - sprintf() の代わりに asprintf() を使用する理由
asprintf が必要な理由を理解するのに苦労しています。ここのマニュアルにはこう書かれています
関数
asprintf()
とはとvasprintf()
の類似物ですが、終端の null バイトを含む出力を保持するのに十分な大きさの文字列を割り当て、最初の引数を介してその文字列へのポインタを返します。割り当てられたストレージが不要になったときに解放するには、このポインタを に渡す 必要があります。sprintf(3)
vsprintf(3)
free(3)
だからここに私が理解しようとしている例があります:
バッファが十分な大きさの文字列を割り当てる場合と、char* = (string) と言う場合の違いは何ですか
c - `asprintf` はスレッドセーフですか?
GNU 関数asprintf
(割り当てられた文字列への出力) はスレッドセーフですか?
(IIC、基本的に、これmalloc
はスレッドセーフかどうかという問題に要約されます。)
サンプルコードを考えてみましょう:
ここでは、グローバル変数には触れません。getValue
並行スレッドで呼び出された場合はどうなりますか? 悪いことは起こりませんよね?
c - C で sprintf とシステム関数を使用するとファイルが空になる
ファイルテキストにいくつかの情報を保存したいので、このプログラムを書きました:
結果:
システムコマンドはこれを返します:
しかし、実行すると: cat /tmp/ping_result.I got an empty file
c - Windows で asprintf() を使用する
Linux で完全に動作する C プログラムを作成しましたが、Windows でコンパイルすると、asprintf() が未定義であるというエラーが表示されます。stdio ライブラリの一部である必要がありますが、多くのコンパイラには含まれていないようです。asprintf() 関数を使用できる Windows 用のコンパイラはどれですか? 私は複数のコンパイラを試しましたが、これまでのところそれを定義しているようには見えません。