程序不会创建输出文件

时间:2018-01-17 17:43:06

标签: c file encryption

我必须编写一个接收参数的程序( ex:-in cypher/in/in2.txt -out cypher/out/out2.txt -key 0 -mode enc -alg caesar ),并且必须对“in”文件中的文本执行加密/解密操作并打印输出“out”文件。

因为我们学生很多,为了查看我们的课程,老师制作/下载了一个程序“检查器”,它提供了7个测试,例如示例中的测试,并将输出文件与一个名为ref的文件进行比较。 我已经完成了加密算法,但我遇到了一个问题:当我“手动”运行测试时(从cmd -introducing参数,或者只是将它们插入vs-proprieties-debugging),程序运行良好。它创建输出文件,与ref中的输出文件完全相同。但是当我运行检查程序时,程序不会创建输出文件。

我注意到一些有趣的东西,在我拥有源代码的文件夹中,在我运行检查器之后,它出现了一些文件,其中包含一些参数的名称( ex:-hint,{{1没有扩展名),包含输出文件中应包含的内容。我在VS中使用过调试并检查了输出文件的名称,这是正确的。但是,当我“手动”运行它时,文件是正确构建的,当使用检查器时,它甚至不会创建它们。(该程序经过一些朋友的验证,似乎没有任何写作问题)。

here is a pic with the folder created after running the checker

这里我重建程序的第一部分只是为了解决输出问题;它不是完整的程序,但在第一次测试时,在检查器中它应该返回:缺少输入文件!

-alg

上面的函数用ASCII和对参数进行排序,然后立即对参数进行排序,以便我知道每个参数的确切含义

void ordonare_argumente(int n, char *p[]) {
    int v[20];
    int g[20], k = 0;
    for (int i = 1; i < n; i++)
    {
        int sum = 0;
        char *j;
        j = p[i];
        if (j[0] == '-') {
            for (size_t u = 1; u < strlen(j); u++)
                sum = sum + j[u];
            k++;
            v[k] = sum;
            g[k] = i;

        }
    }
    for (int i = 1; i <= k - 1; i++)
        for (int j = i + 1; j <= k; j++)
            if (v[i] > v[j]) {
                char **pahar = (char**)malloc(1000);
                int aux = v[i];
                v[i] = v[j];
                v[j] = aux;

                pahar[g[i]] = p[g[j]];
                p[g[j]] = p[g[i]];
                p[g[i]] = pahar[g[i]];

                pahar[g[i] + 1] = p[g[j] + 1];
                p[g[j] + 1] = p[g[i] + 1];
                p[g[i] + 1] = pahar[g[i] + 1];
                free(pahar);

            }
}

0 个答案:

没有答案