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 ステートメントで != NULL の代わりに >=0 を使用してみましたが、これは単に出力されます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 で fileName を探していますか、それともその逆ですか?

1 つ目は内部を検索する文字列です。2 番目は検索する文字列です。

それ以外の場合は、固定データでテスト ケースを作成してみてください。

于 2012-05-03T11:53:43.903 に答える