如何在C中为文件扩展名定义“.txt”常量?

时间:2017-09-06 22:21:16

标签: c string constants

我有这个代码,我使用这个函数fopen(),我有一个字符串name,它有“测试”。我如何定义像“.txt”这样的文件扩展名的常量只是为了在我的name var而不是其扩展名中包含名称?我想过:#define TXT ".txt"但我该怎么做才能在函数中使用它?与fopen(name TXT, "r");类似,或者当我在scanf()部分询问文件名时,是否应该添加常量?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,我会在询问文件名后添加常量。这样的事情有效:

#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连接字符串似乎有点奇怪,但实际上这是我所知道的最安全的方式。我希望有所帮助。