-1

どのように機能するかを理解しようとしてsscanf()います。http://docs.roxen.com/pike/7.0/tutorial/strings/sscanf.xmlのページからいくつかの例を実行しましたが、私のプラットフォームでは動作しません。理由がわかりません。例: "sscanf("4711bar", "%d%s", a, b);" プログラムをエラーで終了させます...

動作する例の 1 つを次に示します: "sscanf("foo", "f%s", a);". 理由を知っている人はいますか?それらはあなたのプラットフォームで動作しますか? ありがとうございました。

これは私のコードです:

 int main(void){

   char *b = (char*)malloc(sizeof(char)*100);       
   int a = 0;

   sscanf("4711bar", "%d%s", a, b);
   printf("%d", a);
   printf("%s", b);
 }
4

2 に答える 2

1

sscanf("4711bar", "%d%s", &a, b); 次のように書く必要があります: &make はポインターへのポインターであり&a、ポインターが必要です。asscanf

aが配列であるため、2 番目の例が機能します。またa、型の配列 は、配列の最初の要素 ( ) を指すchar[100]型のポインターに暗黙的に変換されます。と同じですchar *a[0]a&(a[0])

int a;
char b[100];
sscanf("4711bar", "%d%s", &a, b);

-

char a[100];
sscanf("foo", "%s", a);
于 2013-11-09T20:11:11.207 に答える
0

sscanf&a整数およびb文字列の有効なポインターを渡す必要があります。

sscanf("4711bar", "%d%s", &a, b);
                          ^

さらに、あなたのコードは C++ ではなく C 風です。C++ を使用すると、次のようになります。

std::stringstream s;
s << "4711bar";

int a;
std::string b;

s >> a >> b;
于 2013-11-09T20:13:06.847 に答える