2017-09-06 36 views
1

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

+2

避免像瘟疫一样的strncpy()。更好地使用'snprintf()'并检查返回值。 – wildplasser

回答

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方式,但实际上这是我知道的最安全的方式。我希望有所帮助。

相关问题