我创建了一个简单的程序,它接受两个命令行参数(一个字符和一个数字),然后打印char,但多次指定数字到屏幕。
示例:
./ fstring a 4
AAAA
它主要起作用,但由于某种原因,特定的数字最后会有奇怪的输入。
./ 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有关,但我无法弄明白。
答案 0 :(得分:4)
你忘记了字符串的终止零点。写
for(i = 0; i < t; ++i)
buf[i] = c;
buf[i] = '\0';