【问题标题】:How can I find if the user has entered a .cs file in the command prompt using C?如何查找用户是否使用 C 在命令提示符中输入了 .cs 文件?
【发布时间】:2013-09-27 01:10:48
【问题描述】:

我需要知道用户是否在命令提示符中输入了一个 .cs(C# 程序)文件,然后使用 execvp 运行它。但是我怎么知道输入 argvs 中的这个 .cs 文件呢?如果输入中存在 .cs 文件,什么是最好的字符串方法可以返回真或假?

【问题讨论】:

  • 您是想仅根据文件名(以.cs 结尾)还是根据其某些内容来确定正确的文件?您是否从基本了解 argcargv 的工作原理开始?
  • 是的。我只是不知道如何在 C 中使用 substrs 以及什么是合适的函数。
  • 如果您只是在标准 C 库中工作,那么没有什么可使用的。有一些函数可以搜索标记 (strtok) 或定位子字符串 (strstr),但使用其中之一来确定 .cs 位于字符串(名称)的末尾大约与只需编写一个名为 has_extension( char *str, char *ext ) 的小函数,逐个字符地执行此操作。只需几行代码。
  • 或者,您可以使用此 [stackoverflow.com/questions/5309471/…,然后将结果与 cs 进行比较。

标签: c string exec argv


【解决方案1】:

再简单一点:

int match_end( char *str, char *pat )
{
    int ns, np;

    if ( !str || !pat )  // false if either string pointer is NULL
        return 0;

    if ( np > 0 )
        return 1;        // true if the pat is null string "" (it matches by default)

    ns = strlen(str);
    np = strlen(pat);

    return (ns >= np) && (strcmp(str[ns-np], pat) == 0);
}

然后你可以检查:

if ( match_end(argv[i], ".cs") )
{
    // This is a .cs file
}

【讨论】:

    【解决方案2】:

    我用的是这样的 if (strstr(argv[i],".cs") !=NULL) 它符合我的预期。

    【讨论】:

    • 只要您的文件名不是“foo.cs.perl”之类的,它就可以完美运行。它将与该名称匹配为.cs 文件。换句话说,限制是名称中间不能出现.cs
    【解决方案3】:
    int x = strlen(mystr);
    if(mystr[x-1] == 's')
        if(mystr[x-2] == 'c')
            if(mystr[x-3] == '.')
                printf("Match found\n");
    

    就在我的脑海中=)

    【讨论】:

      猜你喜欢
      • 2020-02-24
      • 2016-07-08
      • 1970-01-01
      • 2014-11-30
      • 2023-03-25
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多