我目前正试图让我的程序以我想要的方式工作。我目前处于可以从命令行打开任何文本文件(无限量)并显示它们的位置。我想扩展这个并让用户输入格式化显示文本的短语。我之前发过一个类似的问题,我得到了一些很好的答案,但我不能使用getopt()。如何能够扫描命令行中的“-w”和数字,所以“-w5”和“-s”没有数字。这是我唯一能够检测到的两件事。我不介意是否发表声明,我希望能在朋友中选择最短的节目,但在这一点上,我只想完成它。有任何想法吗?多个if语句是我朋友的想法,我个人认为这是不必要的,但如果这就是我必须要做的......如果其他人有任何想法,那将非常有用。我只是希望我的程序从命令行中检测这两个字符。我是C的新手(我只做了一些程序),但是我喜欢学习,我已经尝试使用谷歌搜索并自己尝试,但是对C来说是新手,试图找到我需要的东西所有其他文字和行话都很难。
任何事情都会有用,谢谢。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int l = 1;
while(l != argc)
{
FILE *fp;
fp = fopen(argv[l], "rb");
l++;
if (fp != NULL)
{
int i = 1;
do
{
i = fgetc(fp);
printf("%c",i);
printf(" ");
}
while(i!=-1);
fclose(fp);
}
else
{
printf("Error.\n");
}
}
}
void scanningForWS(int argc, char **argv)
{
}
答案 0 :(得分:1)
您应该查看plan9的libc.h文件中的ARGBEGIN和ARGEND宏(位于文件的最后),看看它是如何完成的(有关其用法示例,请参阅arg(3))
Alernatively,你可以检查这个机制的suckless实现,这是非常好的(我已经重新实现了它的一个版本,即使在找到错误的标志之后也会解析参数,但是它没有在任何地方发布。如果你需要,我可以发布它。
答案 1 :(得分:0)
命令行参数在argv中,并且由于argv是一个数组,因此查找其中特定元素的唯一方法是迭代,检查每个元素,直到得到所需的元素。如果您不想自己编写所有内容,看起来C在search.h中有一个名为'lfind'的方法来执行此操作。 Here is an example如何使用它。希望有所帮助:3。
此外,GNU documentation为它