2010-06-20 64 views
0

我写的是使用系统()函数的fuzzer,我需要复制:sprintf不能复制?

char a[1100]; /* full of A's with null ending */ 

到:

char tmp[10000]; 

我用:

sprintf(tmp, "%s", a); 

当我printf的TMP没有什么打印。我究竟做错了什么?

+0

最初填入的'a'如何? – 2010-06-20 00:54:38

回答

3

没有看到整个事情,没有办法说你做错了什么。

以上sprintf应该可以工作,但strcpy会更有意义。我猜想sprintf工作正常。可能是因为你认为你的a数组不是“满A”,而是一个空字符串(满零)。或者,也许这是您的打印,要么不起作用,要么起作用,但出于某种原因,您看不到输出。

我敢打赌你的a是一个空字符串。没有A在那里。在哪里以及如何将这些A放入a阵列?

+0

我发现memset()不会填充我的变量,如果它在主函数中声明的话。是否有一个原因?我认为我应该避免在栈之外声明变量。 – Dan 2010-06-20 00:34:13

+0

无论变量声明在哪里,您都可以在任何适当大小的变量上使用memset,但必须是其他问题。 – 2010-06-20 00:56:32

+0

@Dan:咦?告诉我们你的代码。 – jamesdlin 2010-06-20 01:48:41

3

输出通常是行缓冲的。如果您正在打印的字符串没有换行符,则可能会在未先致电fflush(也请参阅http://c-faq.com/stdio/fflush.html)时看不到它。但正如AndreyT所说,我们无法看到代码的其余部分。