我有这个代码,我使用这个函数fopen()
,我有一个字符串name
,它有“测试”。我如何定义像“.txt”这样的文件扩展名的常量只是为了在我的name
var而不是其扩展名中包含名称?我想过:#define TXT ".txt"
但我该怎么做才能在函数中使用它?与fopen(name TXT, "r");
类似,或者当我在scanf()
部分询问文件名时,是否应该添加常量?
答案 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连接字符串似乎有点奇怪,但实际上这是我所知道的最安全的方式。我希望有所帮助。