генерация случайных печатных символов ascii в c - PullRequest
1 голос
/ 21 ноября 2010

Я пытаюсь написать программу для тестирования, которая генерирует последовательность псевдослучайных печатных символов 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 Ответ

1 голос
/ 21 ноября 2010

Попробуйте исправить эту строку:

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

должно быть:

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

Но это, вероятно, будет лучше:

  if (!isprint(c)) {
...