我有一个因recvfrom()而收到的Buffer。让我们说,
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个字节,包括文本文件的空间和我的receiveBuffer? :(
我可以通过使用getc()逐个字符地读取文件,但我不知道如何比较文件中固定数量的字节,如果比较为false,则跳转到下一行,忽略所有其他剩余的那行中的字节?
欢迎任何帮助。在此先感谢:)
答案 0 :(得分: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);