如何定义";。txt";C中文件扩展名的常量?

如何定义";。txt";C中文件扩展名的常量?,c,string,constants,C,String,Constants,我有这个代码,我使用这个函数fopen(),我有一个字符串name,上面有“test”。我如何定义像“.txt”这样的文件扩展名的like常量,使其名称在我的namevar中,而不是在其扩展名中?我想:#define TXT.TXT“,但是在函数中如何使用它呢?如fopen(名称为TXT,“r”)或者当我在scanf()部分询问文件名时是否应该添加常量?如果我正确理解了这个问题,我只需在询问文件名后添加常量即可。类似这样的工作原理: #define _GNU_SOURCE #include &l

我有这个代码,我使用这个函数
fopen()
,我有一个字符串
name
,上面有“test”。我如何定义像“.txt”这样的文件扩展名的like常量,使其名称在我的
name
var中,而不是在其扩展名中?我想:
#define TXT.TXT“
,但是在函数中如何使用它呢?如
fopen(名称为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); 
}
定义GNU源
#包括
#包括
#包括
#定义TXT“.TXT”
内部主(空)
{
字符名[30];
printf(“请输入文件名:”);
if(scanf(“%25s”,name)!=1)/*必须为“.txt”和\0留出空间*/
出口(-1);
*((char*)mempcpy(name+strlen(name),TXT,4))=“\0”;
printf(“%s\n”,名称);
出口(0);
}
用mempcpy连接字符串似乎有点奇怪,但实际上这是我知道的最安全的方法。我希望这会有帮助。

避免像瘟疫一样的疾病。最好使用
snprintf()
并检查返回值。