1.随机数产生函数rand和srand:rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数 值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
字符串输入
1.gets函数:gets没有解决缓冲区溢出的问题 gets(variable);
- 他不检查预留存储区是否能够容纳实际输入的数据。多出来的字符简单的溢出到相邻的内存区。
- 读字符串直到遇到一个换行字符 就结束输入,按回车键产生。在读取换行符之前的所有字符时会在这些字符后添加一个空字符 。
2.fgets函数 fgets(variable,MAX,stdin);
- 第一个参数是字符数组名,从指定文件中读一个字符串到字符数组中
- 第二个参数MAX表示最大读入字符数。如果这个参数为n,fgets()就会读取n-1个字符或者读完一个换行符为止,它是会算上换行符的。由这两者最先满足的那个来结束输入,然后在最后加一个/0。
- 第三个参数表示读哪一个文件。从键盘上读取数据时,可以使用stdin(standard input)作为该参数,这个标识符在stdio.h中定义。
- 能让使用者指定最大读入字符数。fgets是为了I/O而设计的。
- 不检查预留缓冲区是否能够容纳用户实际输入的数据。多出来的字符会导致内存溢出,fgets函数改进了这个问题。
- 由于fgets函数是为读取文件设计的,所以读取键盘是没有gets那么方便。
- fgets读取到换行符,会把它存储在字符串里,而不像gets()那样丢弃它。
3.scanf函数
- scanf()函数与gets()函数最大的差别是它们如何决定字符串合适结束。
- scanf()读取单词,gets所有的字符。
- 如果设置了宽度,如%10s,scanf()就会读入十个字符或者遇到第一个空白字符。
字符串的输入
1.puts函数 只需要给出字符串参数的地址就行。
- char str1[]; char *str2; puts(str1); puts(str2);
2.fputs()函数
- fputs()需要第二个参数来说明要写的文件。可以使用stdout(代表standard output)作为参数来进行输出显示,stdout在stdio.h中定义。
- 与puts()不同的是,fputs ()并不为输出自动添加换行符。
- fputs(line,stdout)
- 将line中的字符串什么的写入到文件stdout中。