检查字符串是否包含字符串

时间:2012-05-03 11:45:48

标签: c

我目前正在开发一个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,也会打印所有内容。

感谢您提供的任何帮助。

2 个答案:

答案 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还是反过来?

第一个是要在里面搜索的字符串。第二个是要搜索的字符串。

否则,尝试使用固定数据创建测试用例。