我有一个主要功能:
int main(int argc,char *argv[]) {
UserOptions opt;
opt = GetDefaultOptions();
/* Override defaults with requested options */
HandleArgs(&opt,&argc,&argv);
}
名为UserOptions
的结构:
typedef struct {
int codewords;
int mode;
char *separator;
} UserOptions;
GetDefaultOptions()
将一些默认值设置为UserOptions
,除非用户明确提供了这些默认值,在这种情况下,HandleArgs()
对其进行了如下设置:
HandleArgs(UserOptions *opt,int *argcp,char **argvp[]) {
int optchr;
int longIndex;
struct option longOptions[] = {
{"codewords",required_argument,NULL,'c'},{"mode",no_argument,'D'},{"separator",' /* Something here */ '},{0,0}
};
for (;;) {
optchr = getopt_long(*argcp,*argvp,"c:D: /* ??? */ ",longOptions,&longIndex);
switch (optchr) {
case 'c':
opt->codewords = DmtxTrue;
break;
case 'D':
opt->mode = 1;
break;
/* something to set opt->separator to user defined separator */
default:
return 0;
break;
}
}
}
我想将分隔符设置为用户定义的值,而不是像\n
这样的预定义值。例如,如果用户输入|
或>
作为分隔符,则opt->separator
应设置为|
或>
。
编辑: 我想在功能中使用用户提供的分隔符。现在我就像
if (tempBuffer[i] != '\n') {
/* Do something */
}
相反,我想拥有它:
if (tempBuffer[i] != opt->separator) {
/* Do something */
}
其中opt->分隔符可以是用户提供的|
或>
。