2017-09-06 50 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方式,但實際上這是我知道的最安全的方式。我希望有所幫助。

相關問題