0

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

char receiveBuffer[12] = "NewClient 5";

我想要一个如下所示的文本文件:

NewClient 1 192.168.1.1 8881
NewClient 2 192.168.1.1 8882
NewClient 3 192.168.1.1 8883
NewClient 4 192.168.1.1 8884
NewClient 5 192.168.1.1 8885
NewClient 6 192.168.1.1 8886
NewClient 7 192.168.1.1 8887
NewClient 8 192.168.1.1 8888
and so on..

让我们假设 receiveBuffer 里面有“NewClient 5”。现在我想要将我的 receiveBuffer 与文件的内容进行比较。当receiveBuffer 匹配文件的内容时,例如在这种情况下,第5 行的起始内容与我的receiveBuffer 中的相同,然后我想将相应的数字“192.168.1.1 8885”复制到sendBuffer。

如何才能做到这一点?我如何将仅包含文本文件空间的起始 11 个字节与我的接收缓冲区进行比较?:(

我可以通过使用 getc() 逐个字符地读取文件来做到这一点,但我不知道如何比较文件中固定数量的字节,如果比较为假,则跳转到下一行,忽略其中的所有其他剩余字节线?

欢迎任何帮助。提前致谢 :)

4

1 回答 1

3
char * filename; // needs to be defined somewhere
FILE* fp = fopen(filename, "r");

char line[1024]; // assuming 1024 is the longest a line can be
while (fgets(line, sizeof(line), fp)) {
    if (!memcmp(line, receiveBuffer, strlen(receiveBuffer))) {
        // found the line

        char * remainder_of_line = line + strlen(receiveBuffer);
        // do whatever you want with the rest of the line found at remainder_of_line


        // optionally if you are only interested in the first matching line
        break;
    }
}

fclose(fp);
于 2013-06-06T11:01:04.790 回答