C 使用getopt optarg时出现fopen错误问题
运行它不会打开我正在使用option-w中的optarg解析的文件 我使用./programname-w filename.txt运行 filename.txt与exe文件等位于同一目录中 我在这里发布了一部分代码,让大家理解,谢谢 另外,对不起,我的英语不好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': {
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
有一个值。Elseoptarg
为空
如果此类字符后跟冒号,则该选项需要
论据
您缺少选项w
的:
。您应该让lw:
指定w
有一个值。Elseoptarg
为空
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);