【发布时间】:2019-08-15 12:02:17
【问题描述】:
TL;DR - 我的问题是我似乎无法同时使用这两个选项。只有“-n”在工作。我也希望 '-h' 工作。
我正在尝试创建一个程序,该程序基本上可以打印出“.txt”或“.log”文件的最后几个字母。但是,我在使用 getopt() 时遇到了问题。我正在尝试使用命令行访问不同的案例,但我只能访问第一个案例
我已经尝试在“nLh”之后包含冒号 (:),但它最终会输出“分段错误”(核心转储)”错误。
Ex1:./print.out -h(失败)
我传入的内容
./print.out -h
预期输出
用法:./print.out -n
实际输出
分段错误(核心转储)
Ex2:./print.out -n 60(成功)
我传入的内容
./print.out -n 60
预期输出
txt 文件中的随机文本文件 ... txt 文件中的随机文本文件
实际输出
txt 文件中的随机文本文件 ... txt 文件中的随机文本文件
if(argc >1)
{
while ((option =getopt(argc,argv,"nLh"))!=-1)
{
switch (option)
{
case 'n':
if( isExtensionTXTorLog && charactersRead >0)
{
}
else if( argc == 3 && !isExtensionTXTorLog)
{
}
else
{
exit(2);
}
break;
case 'L':
break;
case 'h':
printUsage();
break;
case '?':
exit(0);
break;
default:
break;
}
}
}
else
{
accessDefault(buffer);
return 0;
}
【问题讨论】:
-
@JUSHJUSH 我更新了我的帖子。我的问题是我似乎无法让这两个选项都起作用,只有“-n”起作用。我也希望 '-h' 工作。
-
您是否尝试过使用调试器单步执行您的程序?
-
@AndrewHenle 抱歉,我是 C 新手。到目前为止,我已经尝试过 valgrind 和 GDB 没有错误。我从 GDB 得到的只是 [Inferior 1 (process 6483) exited with code 2]