在c中生成随机可打印的ascii字符

时间:2010-11-21 04:29:38

标签: c ascii random

我正在尝试编写一个用于测试目的的程序,该程序生成一系列伪随机可打印ASCII字符,您可以在命令行中输入所需的字符数。现在它运作得不好;序列几乎总是多数?并且它并不总是打印我告诉它打印的字符数。这是我的代码;它出什么问题了?我用时间作为随机函数的种子。

注意:使用任何比使用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;
}

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试修复此行:

  if (c != 9 && c != 10 && c <= 32 && c >= 127) {

应该是:

  if (c != 9 && c != 10 && (c < 32 || c >= 127)) {

但这可能会更好:

  if (!isprint(c)) {