我目前正在开发一个C程序,我需要检查字符串中是否有字符串。字符串可能是mylog.txt.1,我想检查它是否包含mylog.txt以及它是否确实做了什么。
为了执行此操作,我使用以下代码
int logMaintenance(void *arg)
{
while (TRUE)
{
DIR *dir;
struct dirent *ent;
dir = opendir(directory);
if (dir != NULL)
{
while ((ent = readdir (dir)) != NULL)
{
if (strstr(ent->d_name, fileName) != NULL )
{
printf("%s\n", ent->d_name);
}
}
closedir(dir);
}
else
{
printf("Failed to read directory %i", EXIT_FAILURE);
}
SL_WU_SleepUSecs(2000);
}
return 0;
}
但是,此代码似乎不起作用。由于某种原因,它只会打印mylog.txt而不包括以.1或.2等结尾的任何其他文件。我也尝试在if语句中使用> = 0而不是!= NULL这只是即使它不包含mylog.txt,也会打印所有内容。
感谢您提供的任何帮助。
答案 0 :(得分:1)
ANSI / ISO C提供char *strstr(const char *haystack, const char *needle)
功能,允许在大海捞针中找到针。使用#include <string.h>
获取原型。你确定你的args顺序正确吗?
编辑:我的干草堆和针头的顺序错了,脸红了。
答案 1 :(得分:0)
您可能错误地使用strstr()的参数。从你的描述中很难说清楚。您是在ent-&gt; d_name中寻找fileName还是反过来?
第一个是要在里面搜索的字符串。第二个是要搜索的字符串。
否则,尝试使用固定数据创建测试用例。