【发布时间】:2017-01-05 04:18:30
【问题描述】:
我创建了一个简单的程序,它接受两个命令行参数(一个字符和一个数字),并将字符打印到屏幕上,但多次指定数字。
例子:
./fstring a 4
啊啊
它主要是有效的,但由于某种原因,对于特定的数字,最后会有奇怪的输入。
./fstring a 8
aaaaaaaa¼@
./fstring a 9
aaaaaaaaa@
./fstring a 10
aaaaaaaaaa@
40、41 和 42 以及 88、89 和 90.. 等等都会出现同样的怪异模式。它似乎从 8 点开始以 40 为增量发生。这是代码。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void create_string(char chr, int times);
int main(int argc, char *argv[])
{
create_string(*argv[1], atoi(argv[2]));
return 0;
}
void create_string(char c, int t)
{
char buf[t+1];
int i;
for(i = 0; i < t; ++i)
buf[i] = c;
printf("%s\n", buf);
}
我想它与buf有关,但我无法弄清楚。
【问题讨论】:
-
%s格式说明符需要一个以空字符结尾的字符串作为参数。这就是它知道何时停止写作的方式。