嗨,我正在尝试编写一个程序,可以逐行,逐字或逐字符地比较两个文件.它必须能够读入命令行选项"-l -w -i或 - "...如果选项是-l,它会逐行比较文件.如果选项是-w,它会逐字比较文件.如果选项是 - 它会自动假定下一个arg是第一个文件名.如果选项是-i,则以不区分大小写的方式对它们进行比较.否则,它默认按字符比较文件
只要-w和-l没有同时输入且没有多于或少于2个文件,输入选项的时间并不重要.
我甚至不知道从哪里开始解析命令行参数.请帮忙 :(
所以这就是我想出的所有代码.我还没有错误检查它,但我想知道我是否以过于复杂的方式写东西?
/*
* Functions to compare files.
*/
int compare_line();
int compare_word();
int compare_char();
int case_insens();
/*
* Program to compare the information in two files and print message saying
* whether or not this was successful.
*/
int main(int argc, char* argv[])
{
/*Loop counter*/
size_t i = 0;
/*Variables for functions*/
int caseIns = 0;
int line = 0;
int word = 0;
/*File pointers*/
FILE *fp1, *fp2; …Run Code Online (Sandbox Code Playgroud) 我想以下列方式将参数传递给我的C++程序:
./myprog --setting=value
Run Code Online (Sandbox Code Playgroud)
是否有任何图书馆可以帮助我轻松完成这项工作?
好的,我已经搜索并发现以下两个StackOverflow主题让我朝着正确的方向前进:
注意:所有代码都是PSEUDO-CODE.将在其工作时发布可编译代码.
但是,我仍然对如何在C中使用getopt_long()感到困惑.我正在编写的程序被定义为具有以下可能的标记(但可以包含您绝对需要的数量,其余用空值填充) ):
id3tagEd filename -title "title" -artist "artist" -year 1991 -comment "comment" -album "album" -track 1
Run Code Online (Sandbox Code Playgroud)
现在,根据我的阅读,我需要利用一个结构来获取长期选项,对吗?如果是这样,我写了一些类似的东西:
struct fields field =
{
char *[] title;
char *[] artist;
char *[] album;
int year;
char *[] comment;
int track;
}
static struct options long_options[] =
{
{"title", 0, &field.title, 't'},
{"artist", 0, &field.artist, 'a'},
{"album", 0, &field.album, 'b'},
{"year", 0, &field.year, 'y'},
{"comment", 0, &field.comment, 'c'},
{"track", 0, &field.track, 'u'},
{0, 0, 0, 0}
}
Run Code Online (Sandbox Code Playgroud)
现在,根据我收集的内容,我将通过以下方式调用它:
int …Run Code Online (Sandbox Code Playgroud) 我做了很少的程序来计算pi(π)作为一个整体.现在我面临一个问题如何扩展它以计算积分,这将在启动应用程序时作为额外参数给出.我如何在程序中处理这样的参数?
可能重复:
C++有哪些参数解析器库?
我已经做了一些寻找,并且有很多用于命令行选项解析的库,但很难区分它们.有没有人有任何经验?是否比其他任何人更难/更好/更快/更容易/更好?或者我应该自己成长?