C snprintf错误

时间:2015-08-21 15:30:44

标签: c printf

Hello togheter。

const char* buffer = "";
printf("Creating Buffer..\n");
snprintf(buffer, sizeof(buffer), "mkdir %s", argv[1]);
printf("Created, executing..\n");
system(buffer);

为什么上面的代码给了我这个错误?

Bus error: 10

感谢您的回答

2 个答案:

答案 0 :(得分:2)

你的第一行说:

  1. 创建一个没有字符的字符串(-'MESSAGE')。
  2. 创建一个名为buffer的变量,指向此字符串(= "";
  3. 我保证不会通过变量(char* buffer =)修改该字符串。
  4. 接下来你要告诉const覆盖字符串。 您还告诉snprintf()您拥有的内存是snprintf()变量'buffer'。但事实并非如此 - 你拥有的内存是sizeof()空字符串sizeof()。指向字符串的变量大小不同。

    你承诺不会覆盖内存,即使你没有答应,你只有空字符串的内存,而不是包含任何字符的字符串。

答案 1 :(得分:0)

访问坏内存时会出现Bu错误。你没有指针的内存。您正在使用mkdir命令,因此您可以为单个目录创建这样的内存。

next