Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用getopt optarg时出现fopen错误问题_C_Fopen_Getopt - Fatal编程技术网

C 使用getopt optarg时出现fopen错误问题

C 使用getopt optarg时出现fopen错误问题,c,fopen,getopt,C,Fopen,Getopt,运行它不会打开我正在使用option-w中的optarg解析的文件 我使用./programname-w filename.txt运行 filename.txt与exe文件等位于同一目录中 我在这里发布了一部分代码,让大家理解,谢谢 另外,对不起,我的英语不好 while((opt = getopt(argc, argv, "lw")) != -1) switch(opt) { case 'l': {

运行它不会打开我正在使用option-w中的optarg解析的文件

我使用./programname-w filename.txt运行

filename.txt与exe文件等位于同一目录中

我在这里发布了一部分代码,让大家理解,谢谢

另外,对不起,我的英语不好

    while((opt = getopt(argc, argv, "lw")) != -1) 
        switch(opt) {
            case 'l': {
                //... do something ...
            } break;

            case 'w': {
                int counter = 0;
                FILE* ifp = fopen(optarg, "r"); 
                CHECK_OPEN_FILE(ifp, optarg);
                while(fgets(buffer, 256, ifp) != NULL)
                    counter += wordscounter(buffer);
                fprintf(stdout, "File has %d words.\n", counter);
                fclose(ifp);
            }break;

            case '?': {
                if(optopt == '-')
                    break;
                fprintf(stderr, "ERROR: Option -%c unrecognized...\n", optopt);
            } break;

        }

在这部分代码中,我遇到了一个问题:

如果此类字符后跟冒号,则该选项需要 论据

您缺少选项
w
。您应该让
lw:
指定
w
有一个值。Else
optarg
为空

如果此类字符后跟冒号,则该选项需要 论据

您缺少选项
w
。您应该让
lw:
指定
w
有一个值。Else
optarg
为空


fopen
NULL
意味着检查
errno
。您好,欢迎访问,请提供一个比“有人能帮我找到此C代码中的错误吗?”更好的标题。我真的不明白您在问什么。“无法打开由运行为./a.out-w esfile.txt的comand行解析的file.txt”这句话的语法不合理。请尝试以相同的方式创建一个文件(使用不同的名称),并查看它是否显示在与您要读取的文件相同的位置。
while((opt=getopt(argc,argv,lw:)!=-1){
fopen
NULL
意味着检查
errno
。嗨,欢迎来到,所以请提供一个比“有人能帮我找到这个C代码中的错误吗?”更好的标题。我真的不明白你在问什么。你句子的语法“无法打开comand行解析为/a.out-w esfile.txt的file.txt文件”是不合理的。请尝试以相同的方式创建一个文件(使用不同的名称),并查看它是否显示在与您要读取的文件相同的位置。
while((opt=getopt(argc,argv,lw:)!=-1{
FILE* ifp = fopen(optarg, "r"); 
CHECK_OPEN_FILE(ifp, optarg);