【发布时间】:2010-11-21 04:29:38
【问题描述】:
我正在尝试编写一个用于测试目的的程序,该程序会生成一系列伪随机可打印 ASCII 字符,您可以在命令行中输入所需的字符数。现在它运行得不太好;序列几乎总是多数?s,它并不总是打印我告诉它打印的字符数。这是我的代码;它出什么问题了?我使用时间作为随机函数的种子。
注意:我不值得使用比使用 srand() 和 rand() 更复杂的算法。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) {
int c;
int i;
int limit;
sscanf(argv[1], "%d", &limit);
srand((unsigned int)time(NULL));
for (i = 0; i < limit; i++) {
c = rand();
if (c != 9 && c != 10 && c <= 32 && c >= 127) {
i--;
}
else {
putchar(c);
}
}
return 0;
}
谢谢!
【问题讨论】:
-
虽然这个答案是C#的,但是转换成C应该比较容易:stackoverflow.com/questions/4221001/…
-
为什么你认为 9 和 10 属于“可打印”?
-
他的意思可能是
'\n' -
尝试打印 c 的数值,你会发现问题出在哪里。