用变量简化strcat和sprintf

时间:2017-06-13 07:05:04

标签: c

我一直在使用以下代码将任何变量连接到一个字符串,后跟我想要的任何文件扩展名。这段代码帮助我完成了我想要存储在我的机器中的文件名:

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)可能所有行都在一行!

谢谢。

2 个答案:

答案 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);