c将可变长度int连接到字符串而不打印它

盐沙拉

我需要将整数连接到系统调用字符串:

status = system("./run test.txt " + integer);

integer 这可以是任何整数。

最好的方法是什么?

伊斯卡·贾拉克(Iskar Jarak)

使用snprintf(或在没有它的情况下,sprintf如果没有snprintf或不需要您的代码来在系统上运行)打印到char缓冲区,并将其传递给system调用。

例如

#define MAX_LEN 128
char buffer[MAX_LEN];
int val = 0;
snprintf(buffer, MAX_LEN, "./run test.txt %d", val);

// you would be wise to check that snprintf has not truncated your command
// before passing it to system()
status = system(buffer);

另外,您可以计算整数需要多少个字符,然后分配大小正确正确的缓冲区。这将使您能够sprintf安全使用,并且无需检查截断-chux的答案证明了这一点。请注意,如果您不能使用VLA(C89)并且有避免使用的理由malloc(),例如在某些嵌入式系统上,这可能不是一个好的策略

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章