我一直在使用以下代码将任何变量连接到一个字符串,后跟我想要的任何文件扩展名。这段代码帮助我完成了我想要存储在我的机器中的文件名:
char filename[50] = "Chunk#", val[50], ext[5]=".txt";
int x =1;
sprintf(val, "_%d", x);
strcat(filename, val);
strcat(filename, ext);
printf("%s \n", filename);
我很想找到另一种方法来缩短之前的行,即行(3,4,5)可能所有行都在一行!
谢谢。
答案 0 :(得分:4)
您可以使用sprintf
作为整个字符串,或者更好,snprintf
,如Sourav Ghosh建议的那样:
#define BUFFER_SIZE 50
char filename[BUFFER_SIZE] = "Chunk#", ext[5] = ".txt";
int x = 1;
snprintf(filename, BUFFER_SIZE, "Chunk#_%d%s", x, ext);
printf("%s \n", filename);
答案 1 :(得分:2)
您只需拨打snprintf()
一次,当然不需要初始化filename
,因为它会全部被覆盖:
#define BUFFER_SIZE 50
char filename[BUFFER_SIZE];
const int x = 1;
const char *ext = ".txt";
snprintf(filename, sizeof filename, "Chunk#_%d%s", x, ext);
printf("Built filename '%s'\n", filename);