【问题标题】:How would I scan phrases from the command line?我将如何从命令行扫描短语?
【发布时间】:2012-11-26 04:57:16
【问题描述】:

我目前正在尝试让我的程序按我想要的方式运行。我目前可以从命令行(无限量)打开任何文本文件并显示它们。我想对此进行扩展,让用户输入格式化显示文本的短语。我之前发布了一个类似的问题,我得到了一些很好的答案,但我不能使用 getopt()。否则如何扫描命令行以查找“-w”和数字,因此“-w5”和没有数字的“-s”。这是我唯一希望能够检测到的两件事。我不介意 if 语句,我希望我的朋友中的程序最短,但在这一点上,我只想完成它。有任何想法吗?多个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)
{





}

【问题讨论】:

标签: c syntax if-statement


【解决方案1】:

您应该查看 plan9 的 libc.h 文件中的 ARGBEGIN 和 ARGEND 宏(在文件的最后),了解它是如何完成的(有关其用法的示例,请参阅 arg(3))。

或者,您可以检查suckless 这个机制的实现,这非常好(我重新实现了它的一个版本,即使在找到不正确的标志后也可以解析参数,但它没有在任何地方发布。我可以如果需要,请发布它)。

【讨论】:

    【解决方案2】:

    命令行参数在 argv 中,由于 argv 是一个数组,因此在其中找到特定元素的唯一方法是遍历,检查每个元素,直到获得所需的元素。如果您不想自己编写所有内容,那么看起来 C 在 search.h 中有一个名为 'lfind' 的方法可以执行此操作。 Here is an example 如何使用它。希望对您有所帮助:3。

    另外,GNU documentation 也适合它

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 2023-03-11
      • 1970-01-01
      • 2017-03-31
      相关资源
      最近更新 更多