-2

#include で始まるすべての行を見つけて、それらのファイルを別のファイルに個別に書き込むコードを書きたいと思います。私の主なタスクは、すべてのインクルード ファイルの名前を見つけて別のファイルに書き込むことです。

これは、基本的な IO 操作を使用してこのファイルを開いて読み取る必要があることは明らかです。その後、strtok 関数を使用して、# 間の異なる文字列を解析できると思います (include start with #) が、これは適切な方法ではないことがわかりました。その際、初期化が必要な配列ポインタが必要であり、メイン ファイルには n 個のインクルード ファイルが含まれる場合があります (それらを再帰的に取得する場合、インクルード ファイルにもインクルード ファイルを含めることができることを意味します)。

提案が必要です。

4

2 に答える 2

1

あなたが何を望んでいるかはまだ正確にはわかりませんが、C で記述された実行可能ファイルを使用して別の C タイプ ファイルを解析し、「#include」の出現を別の C タイプ ファイルに分離したいようです。これは、ANSI C コンパイラでビルドする必要がある例です。ソース ファイルと宛先ファイルの完全なパス/ファイル名を渡すだけです。

#include <windows.h>
#include <ansi_c.h>  

int parse(char *in, char *out);


int main(void)
{
    //edit with desired file names        
    parse("c:\\temp\\someCfile.c"  , "C:\\temp\\someNewCfile.c");
    return 0;
}

    int parse(char *in, char *out)
    {
        FILE *fp=0, *fp2=0;
        char lineBuf[280];

        if(in)
        {
            fp = fopen(in, "r");
            if(fp)
            {
                fp2 = fopen (out, "w");
                if(fp2)
                {
                    while(fgets(lineBuf, 280,  fp))
                    {
                        if((lineBuf[0]=='#') && strstr(lineBuf, "#include"))
                        {
                            fputs(lineBuf, fp2);
                        }
                    }
                    fclose(fp2);
                }
                fclose(fp);
            }   
        }
        return 0;
    }
于 2013-08-30T17:00:21.090 に答える