c - 如何在 C 中为文件扩展名定义 ".txt"常量?

标签 c string constants

我在使用函数 fopen() 的地方有这段代码,我有一个字符串 name 并且上面有“test”。我怎样才能像“.txt”这样的文件扩展名定义一个常量,只是为了在我的 name var 中包含名称而不是它的扩展名?我想过:#define TXT ".txt" 但是我该怎么做才能在函数中使用它呢?像 fopen(name TXT, "r"); 还是当我在 scanf() 部分询问文件名时应该添加常量?

最佳答案

如果我正确理解了这个问题,我会在询问文件名后简单地添加常量。像这样的东西有效:

#define _GNU_SOURCE
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

#define TXT ".txt"

int main(void)
{
    char name[30];

    printf("Please enter file name: ");
    if (scanf("%25s", name) != 1) /* must leave space for ".txt" and \0. */
        exit(-1);

    *((char *)mempcpy(name + strlen(name), TXT, 4)) = "\0"; 

    printf("%s\n", name);
    exit(0); 
}

用 mempcpy 连接字符串的方式似乎有点奇怪,但实际上这是我所知道的最安全的方式。希望对您有所帮助。

关于c - 如何在 C 中为文件扩展名定义 ".txt"常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46085150/

相关文章:

c - C volatile变量和高速缓存

c - 请解释一下这个素数生成器代码是如何工作的(C语言)

c - 如何在C中使用二维数组

java - 在 Java 中使用静态变量或方法作为常量数组

c - 访问 void 指针的部分内存

c - putc 会跳过索引 putchar 不会吗?

iphone - 如何检查我的字符串是否以大写字符开头

.net - 获取字符串后的单词

java - Java 中的非大写常量

c++ - Const 和非常量 C++ 构造函数