【问题标题】:Reading from a buffer word by word in c在c中逐字读取缓冲区
【发布时间】:2013-06-02 07:07:03
【问题描述】:

由于recvfrom(),我收到了一个缓冲区。可以说,

字符缓冲区[12] = "你好 1";

我想将 Hello 和 1 分开并将它们存储在不同的缓冲区中,以便一个缓冲区中存储“Hello”,而另一个缓冲区或 int 变量中存储“1”。

换句话说,我想根据空格分隔缓冲区的内容。如何做到这一点?

我试过了:

int number;
char buff[7];
sscanf (buffer,"%s %d",buff,number);

这种方法行得通吗?

【问题讨论】:

  • 请注意 NULL 终止,C 字符串函数确实需要它,但套接字函数不会将终止 NULL 写入缓冲区。

标签: c windows string char scanf


【解决方案1】:

如果只有 2 个单词,你的想法就会奏效。但是您的代码中有一个小错误。 以这种方式更改 sscanf

sscanf (buffer,"%s %d",buff,&number);

【讨论】:

    【解决方案2】:

    此方法有效,但您需要更改以将您的 sscanf 更改为:

    sscanf (buffer,"%s %d",buff,&number);
    

    %d 需要 int*,而您发送的是 int

    【讨论】:

      【解决方案3】:

      看起来你想要strtok,它可以做到这一点。但是请确保您的字符串是 NULL 终止的,recv 和其他套接字函数不会为您执行此操作,并且标准 C 字符串函数确实需要 NULL 终止。

      【讨论】:

        最近更新 更多