我使用PIC和PIC16F886的模拟器IDE,每次运行代码时,random始终等于0。似乎rand()
无法正常工作。我不明白发生了什么。
这里是代码
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#FUSES NOWDT
#FUSES PUT
#FUSES NOMCLR
#FUSES NOPROTECT
#FUSES NOCPD
#FUSES BROWNOUT
#FUSES IESO
#FUSES FCMEN
#FUSES NOLVP
#FUSES NODEBUG
#FUSES NOWRT
#FUSES BORV40
#FUSES RESERVED
#FUSES INTRC_IO
#use delay(clock=8M)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main()
{
int myInput;
int random;
random= rand()%5;
printf ("type a character\r\n");
printf(" %d ", random);
while(1) {
myInput = getc();
printf("You typed - %d\r\n", myInput);
if(myInput>random){
printf("too high\n");
}else if(myInput<random){
printf("too low");
}
}
}
您必须通过调用rand()
函数来初始化srand()
的起点。在第399页的xc8 user guide 中有一个非常好的示例。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main (void){
time_t toc;
int i;
time(&toc);
srand((int)toc);
for(i = 0 ; i != 10 ; i++)
printf("%d\t", rand());
putchar(’\n’);
}