我正在从 UDP 客户端向 UDP 服务器发送一个字符串。服务器的工作是检查此字符串是否存在于文本文件 archive.txt 中的任何位置。
我遇到的问题是 strstr 总是返回 null,即使我的第二个字符串在我的第一个字符串中。
char msg[1000];
FILE *archive;
archive = fopen("archive.txt", "r");
char line[53];
char *testing;
. . .
len = sizeof(cliaddr);
n= recvfrom(sockfd,msg,1000,0,(struct sockaddr *)&cliaddr,&len);
sendto(sockfd,msg,n,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
msg[n]=0;
while(fgets(line, 53, archive) !=NULL)
{
testing = strstr(line, msg);
if(testing!=NULL)
{printf("%s\n","Success");}
else
{ printf("%s\n", "fail");
printf("%s\n", line);
printf("%s\n", msg);
}
}
有时我的程序会打印失败,其中 msg 是 line 的子字符串的 line 和 msg。