0

我目前正在开发一个 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。

感谢您的任何帮助,您可以提供。

4

2 回答 2

1

ANSI/ISO C 提供char *strstr(const char *haystack, const char *needle)了大海捞针的功能。用于#include <string.h>获取原型。您确定您的参数顺序正确吗?

编辑:我把干草堆和针的顺序弄错了,脸红。

于 2012-05-03T11:52:47.937 回答
0

您可能以错误的方式使用 strstr() 的参数。从你的描述很难判断。您是在 ent->d_name 中寻找文件名,还是相反?

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

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

于 2012-05-03T11:53:43.903 回答