2012-04-13 5 views
0

sscanfが渡された文字列を変更するかどうかを知ることができます。または誰でも私がsscanfのソースコードを見つけることができる場所を教えてください。sscanfは、渡された文字列を変更しますか?

私はglibcのをダウンロードして、次のが見つかりました:

extern int sscanf (__const char *__restrict __s, 
       __const char *__restrict __format, ...) __THROW; 
extern int sscanf (__const char *__restrict __s, 
       __const char *__restrict __format, ...) __THROW; 

答えて

4

sscanfあなたがそれに渡す文字列を変更することはありません。 const修飾子で確認できます。

のGlibcソースコードはGitwebにあります。

+0

ありがとうございます:)。私は、私がプロトタイプを観察しなかったので、とても愚かでした。私はカムがソースコードを見つけるリンクに感謝します。 –

+0

@somasekhar - この回答が正しい場合は、それを「受け入れる」と考えてください。乾杯! – ArjunShankar

+0

申し訳ありませんArjun、私が受け入れようとした最後の時間、それは私に12分以上待つように頼んだ。 :) –

2

良いCリソースがいくつかあります。 glibcの場合は、GNU C Library Reference Manualがあなたの聖書になります。また一般的に、特定のコマンドのドキュメントを見つけることで、 "man command"をグーグルにすることは、通常、あなたが探しているものをかなり素早く取得します。

具体sscanf()ため、GNU Cライブラリマニュアルが明示的言うコピーが重なる-ため 例えばオブジェクトとの間で行われる場合、Sはまたとして与えられた場合、この関数の

挙動は、未定義です'%s'、 '%S'、または '%['変換の制御の下にある の制御下にある文字列を受け取る引数。

したがって、通常は何もしませんが、読んでいる文字列と割り当てようとしている変数の間に何らかの自己参照があると、未定義の動作が発生します。

関連する問題