如何获取在C中运行的用于输入和输出文件的命令行参数

拜伦尼克里·弗莱

我正在尝试在CMD开发人员提示符下运行应用程序,它应该具有使用命令行参数的输入文件和输出文件(我不理解,或者无法理解)。但是,当我这样做时,它正在运行并结束,但是没有任何内容被打印到输出文件中。

以下是我的代码,其中已删除了不相关的代码。我不知道我在代码或cmd行开发人员提示中做错了什么。

该应用程序被调用printlines.exe,我的命令如下所示:

printlines.exe -i file.java -o output.txt

任何建议将不胜感激。

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define LINE 1000
void countLines(int *emptyLines, int *totalLines, int *totalComments, char *fileName, FILE *readFile)
{
    char line[LINE]; // set array to store input file data
    //set variables
    readFile = fopen(fileName, "r");
    int lines = 0;
    int comments = 0;
    int empty = 0;

    while (fgets(line, LINE, readFile) != NULL) //while loop that reads in input file line by line
    {
        /*counts lines in input file works when not using 
            command line arguments redacted to shorten */
    }

    fclose(readFile);

    *emptyLines = empty;
    *totalLines = lines;
    *totalComments = comments;
}
int main(int argc, char *argv[])
{
    FILE *inputFile;
    FILE *outputFile;
    char *outputName;
    char *inputName;

    inputName = argv[1];
    outputName = argv[2];

    inputFile = fopen(inputName, "r");
    outputFile = fopen(outputName, "w");

    int emptyLines, totalLines, totalComments;
    countLines(&emptyLines, &totalLines, &totalComments, inputName, inputFile);
    int character;
    bool aComment = false;

    while ((character = fgetc(inputFile)) != EOF)
    {
        /* code that writes info from input to output, works 
              when not using command line arguments redacted to shorten*/
    }

    //close files
    fclose(inputFile);
    fclose(outputFile);

    printf("There are %d total lines, %d lines of code and %d comments in the file\n", totalLines, emptyLines, totalComments);
    return 0;
}
阿纳斯塔丘

命令行参数和打开文件的错误都不会执行错误检查。我敢打赌,如果您执行以下操作,您将迅速找出问题所在:

//....
if(argc < 5){ // check arguments
    fprintf(stderr, "Too few arguments");
    return EXIT_FAILURE;
}

inputFile = fopen(inputName, "r"); 
if(inputFile == NULL){ // chek if file was open
    fprintf(stderr, "Failed to open input file\n");
    return EXIT_FAILURE;
}
outputFile = fopen(outputName, "w");
if(outputFile == NULL){ // again
    fprintf(stderr, "Failed to open output file\n");
    return EXIT_FAILURE;
}
//...

请注意,您的comand行字符串具有5个参数,并且文件名位于索引2和4,因此您需要:

inputName = argv[2];
outputName = argv[4];

或只是删除-i和,-o因为它们似乎没有执行任何操作。

我还要注意,您可以fopen在函数或函数中直接使用命令行参数,不需要两个额外的指针:

inputFile = fopen(argv[2], "r");
outputFile = fopen(argv[4], "w");
//...
countLines(&emptyLines, &totalLines, &totalComments, argv[2], inputFile);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从 Python 中的命令行参数获取输入路径和文件、输出路径和文件

来自分类Dev

如何从文件中获取命令行参数

来自分类Dev

拆分和连接(从输入文件创建命令行参数)

来自分类Dev

从命令行将多个文件中的列提取到单个输出文件中

来自分类Dev

从命令行将多个文件中的列提取到单个输出文件中

来自分类Dev

在nifi中,如何调用在参数中询问输入文件和输出文件的外部程序

来自分类Dev

从命令行C ++获取文件作为输入

来自分类Dev

如何从ruby文件中运行命令行命令?

来自分类Dev

如何从Python的命令行参数获取文件名

来自分类Dev

如何在IntelliJ IDEA 14.1中获取运行Java的命令行参数

来自分类Dev

从python中的命令行参数获取文件路径

来自分类Dev

输入目录作为C中的命令行参数

来自分类Dev

如何使用perl使用命令行参数从目录中获取文件?

来自分类Dev

命令行中的Sass获取输出

来自分类Dev

如何在锡兰中获取命令行参数?

来自分类Dev

如何在OpenVMS Fortran中获取命令行参数?

来自分类Dev

使用命令行参数在C中的文件中查找和替换单词

来自分类Dev

如何从Bash中的文件调用几个命令行参数?

来自分类Dev

C ++如何通过命令行参数读取txt文件

来自分类Dev

如何在Windows命令行中运行.py文件?

来自分类Dev

如何从Java在命令行中运行ruby文件?

来自分类Dev

如何从命令行运行.c文件

来自分类Dev

FFmpeg命令行输出文档

来自分类Dev

如何使用“ execl()”在C / C ++中运行系统命令,仅将函数参数作为命令行传递,而不作为可执行文件传递?

来自分类Dev

如何制作运行带有输入框的命令行的脚本,用于命令的变量?

来自分类Dev

在 Freebsd OS 上的 psql 命令行上运行脚本时,如何将输出和错误消息一起记录到文件中?

来自分类Dev

从文件中读取命令行参数

来自分类Dev

差异文件输出硬编码文件路径和之间传递的命令行参数

来自分类Dev

使用标准输入和标准输出使用 shell_exec 或 exec 其他任何东西从命令行运行 python 文件并传递输入

Related 相关文章

  1. 1

    从 Python 中的命令行参数获取输入路径和文件、输出路径和文件

  2. 2

    如何从文件中获取命令行参数

  3. 3

    拆分和连接(从输入文件创建命令行参数)

  4. 4

    从命令行将多个文件中的列提取到单个输出文件中

  5. 5

    从命令行将多个文件中的列提取到单个输出文件中

  6. 6

    在nifi中,如何调用在参数中询问输入文件和输出文件的外部程序

  7. 7

    从命令行C ++获取文件作为输入

  8. 8

    如何从ruby文件中运行命令行命令?

  9. 9

    如何从Python的命令行参数获取文件名

  10. 10

    如何在IntelliJ IDEA 14.1中获取运行Java的命令行参数

  11. 11

    从python中的命令行参数获取文件路径

  12. 12

    输入目录作为C中的命令行参数

  13. 13

    如何使用perl使用命令行参数从目录中获取文件?

  14. 14

    命令行中的Sass获取输出

  15. 15

    如何在锡兰中获取命令行参数?

  16. 16

    如何在OpenVMS Fortran中获取命令行参数?

  17. 17

    使用命令行参数在C中的文件中查找和替换单词

  18. 18

    如何从Bash中的文件调用几个命令行参数?

  19. 19

    C ++如何通过命令行参数读取txt文件

  20. 20

    如何在Windows命令行中运行.py文件?

  21. 21

    如何从Java在命令行中运行ruby文件?

  22. 22

    如何从命令行运行.c文件

  23. 23

    FFmpeg命令行输出文档

  24. 24

    如何使用“ execl()”在C / C ++中运行系统命令,仅将函数参数作为命令行传递,而不作为可执行文件传递?

  25. 25

    如何制作运行带有输入框的命令行的脚本,用于命令的变量?

  26. 26

    在 Freebsd OS 上的 psql 命令行上运行脚本时,如何将输出和错误消息一起记录到文件中?

  27. 27

    从文件中读取命令行参数

  28. 28

    差异文件输出硬编码文件路径和之间传递的命令行参数

  29. 29

    使用标准输入和标准输出使用 shell_exec 或 exec 其他任何东西从命令行运行 python 文件并传递输入

热门标签

归档