C:如何打开以特定扩展名结尾的文件

何塞·桑托斯

我需要创建一个程序来读取带有“.deck”扩展名的文件。也就是说,程序参数应该是-d1 <name>.deck. -d1字符串必须始终写入和.deck扩展是强制性的,在<name>可以是任何给定的字符串与任何给定长度。.deck文件基本上是一个带有扑克牌组的文本文件。谢谢 :)

迭戈·罗哈斯

这可能就是你要找的。

当前,以下程序循环遍历所有命令行参数并搜索-d1标志。找到后,它会确保存在下一个参数,即在尝试打开它之前,它是一个带有 .deck 扩展名的字符串。

请注意,此程序不会处理多个文件。您将需要实现某种链接列表或数组来存储多个fds或字符串。

#include <stdio.h>
#include <string.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

static const char *FLAG = "-d1";
static const char *EXTENSION = ".deck";

int is_deck_file(char const *string)
{
    int length = strlen(string);

    if (length < 6)
        return 0;
    if (strcmp(string + (length - 5), EXTENSION) == 0)
        return 1;
    return 0;
}

int main(int argc, char const *argv[])
{
    int fd = -2;

    for (unsigned int i = 0; i < argc; i++) {
        if (strcmp(argv[i], FLAG) == 0) {
            if (i + 1 < argc && is_deck_file(argv[i + 1])) {
                i++;
                fd = open(argv[i], O_RDONLY);
            } else {
                dprintf(2, "Error: %s flag must be followed by a filepath.\n", FLAG);
            }
        }
    }
    if (fd == -2)
        dprintf(2, "No file was provided.\n");
    else if (fd == -1)
        dprintf(2, "Unable to open file.\n");
    else
        dprintf(1, "File provided, with right extension!\n");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除没有特定扩展名的文件?

查找在Unix上没有以特定扩展名结尾的文件名?

Sublime Text:如何自动使用某些文件扩展名的特定编码打开?

如何压缩特定文件扩展名的文件?

根据文件扩展名打开语句

如何打开/查看.proto文件扩展名

如何根据扩展名打开文件?

如何下载文件名不以扩展名结尾的图像?

搜索以特定扩展名结尾的数据类型的递归文件,以便删除文件

如何在程序中打开特定的文件扩展名

删除名称以“ _C”结尾的无扩展名文件

如何在具有相同扩展名但名称包含特定结尾的Powershell中返回文件?

如何配置Linux以扩展名打开文件?

使用SLPDF扩展名打开文件

打开不带扩展名的文件

如何从递归文件复制中排除特定扩展名?

查找不以特定扩展名结尾的文件

将所有以特定扩展名结尾的文件与shell glob匹配(例如,所有以.sh结尾的文件)

查找以扩展名或无扩展名的特定字符结尾的文件名

文件格式-如何打开此扩展名

如何打开扩展名为.chk或没有扩展名的二进制文件?

如何添加启动程序,以在XFce中打开所有具有特定扩展名的文件?

如何检索特定文件扩展名的文件的文件路径?

如何打开未知扩展名的文件

如何从R中的basename结尾删除文件扩展名?

如何在 C++ 中打开以特定扩展名结尾的文件

如何在以 bat 文件中的特定扩展名结尾的目录中搜索文件

更改扩展名后打开文件

打开具有特定扩展名的文件,无论名称如何