字符输入与输出

1.随机数产生函数rand和srand:rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数 值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。

字符串输入

1.gets函数:gets没有解决缓冲区溢出的问题   gets(variable);

  • 他不检查预留存储区是否能够容纳实际输入的数据。多出来的字符简单的溢出到相邻的内存区。
  • 读字符串直到遇到一个换行字符\n就结束输入,按回车键产生。在读取换行符之前的所有字符时会在这些字符后添加一个空字符\0。

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中。

 

posted @ 2016-04-09 13:50  芬乐  阅读(464)  评论(0编辑  收藏  举报