0
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char buffer[40000]= "3 Hello World";
    int idvalue;
    char buf[4000];
    sscanf(buffer,"%d %s%s",&idvalue,buf);
    printf("%d->%s\n",idvalue,buf);
    return 0;
}

このコードには、常に「部分の整数の残り」タイプの可変バッファがあります。idvalueその変数の内容を 2 つの新しい変数とにコピーしたいと考えていますbufidvalueその整数bufが含まれ、スペース、整数、文字列などを含むことができる残りの部分が含まれます。書き込みidvalueは正しくコピーされるようになりましたがbuf、値の場合、空白の後に終了します。残りの部分全体を 1 つの string にコピーする方法を教えてくださいbuf

4

2 に答える 2

3

%[^\n]の代わりにフォーマット指定子を使用してみてください%s

これはsscanf、改行 ( ) までの任意の文字を読み取っ\nて buffに保存するように指示します。

sscanf(buffer, "%d%[^\n]", &idvalue, buf);

他のアプリケーションでは、改行またはタブ[]に到達したら読み上げを停止したい場合など、内の文字に追加できます: .[^\n\t]

于 2012-07-09T09:07:13.463 に答える
0

これは、問題を解決するはずの代替 sscanf 行です。

 sscanf(buffer,"%d %[^\n]",&idvalue,buf);
于 2012-07-09T09:07:17.027 に答える