C语言之随机数和字符串输入输出

一、随机数产生函数

  1、需要加入头文件 #include<stdlib.h> 和 #include<time.h>

  2、Rand是伪随机数产生器,每次调用rand产生的随机数是一样的。

  3、如果调用rand之前先调用srand就可以出现任意的随机数。

  4、只要能保证每次调用srand函数的时候,参数的值是不同的,那么rand函数就一定会产生不同的随机数。

  5、实例:

int main(void)
{
    int t = (int)time(NULL);
    srand(t); //随机数种子
    int i;
    for(i=0;i<10;i++)
    {
        printf("%d\n",rand()); //产生随机数(每次运行都会产生不同的随机数)
    }
    return 0;
}

二、字符串输入与输出函数

  1、scanf函数

    char a[100] = {0};

    scanf("%s",a); //表示输入一个字符串,scanf是以回车键或空格作为输入完成标识的,但回车键本身并不会作为字符串的一部分。

    注意:如果scanf参数中的数组长度小于用户在键盘输入的长度,那么scanf就会缓冲区溢出,导致程序崩溃。

    例如:

#include<stdio.h>
int main(void)
{
    char s[10] = {0};
    scanf("%s",s);
    int i;
    for(i=0;i<10;i++)
    {
        printf("%d",s[i]);
    }
    printf("%s\n",s);
    return 0;
}

  2、gets()函数的使用

    1、gets() 输入,不能只用类似“%s”或者“%d”或者之类的字符转义,只能接收字符串的输入。

    2、实例:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char s[100] = {0};
    gets(s); // 输入:hello world ,gets()函数同样是获取用户输入,它将获取的字符串放入s中,仅把回车键视为结束标志 ,但也有溢出问题
    printf("-------\n");
    printf("%s\n",s); // 输出:hello world 

    return 0;
}

  3、gets()获取用户输入,atoi() 函数将字符串转为数字 ,头文件中加入 #include<stdlib.h> 

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char a[100] = {0};
    char b[100] = {0};
    gets(a); // 获取第一次输入,a的对象只能是数组 ,不能转义(字符串转为数字),需要 使用专门的函数
    gets(b);
    int i1 = atoi(a); // 将字符串转化为一个整数
    int i2 = atoi(b);
    printf("%d\n",i1+i2);

    return 0;
}

  4、fgets()函数用法--gets()函数的升级版

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char c[10] = {0};
    fgets(c,sizeof(c),stdin);//第一个参数是char的数组,第二个参数是数组的大小,单位字节,第三个参数代表标准输入。
    // 输入: hello world
    printf("%s\n",c);// 输出:hello wor --> 它把字符串尾的 0 也包括在内了,fgets()会自动截断,防止溢出,所以很安全
    // 调用fgets()的时候,只要能保证第二个参数小于数组的实际大小,就可以避免缓冲区溢出的问题。
    return 0;
    }

  5、puts()函数,将用户的输入原样打印出来

#include<stdio.h>
#include<stdlib.h>
int main(void)
    {
    char d[100] = {0};
    gets(d);
    printf("------\n");
    puts(d);  //自动输出,附带换行
    return 0 ;
    }

  6、fputs()函数,是puts的文件操作版

#include<stdio.h>
#include<stdlib.h>
int main(void)
    {
    char e[100] = {0};
    fgets(e,sizeof(e),stdin); // hello world mylove
    printf("----------\n");
    fputs(e,stdout);  // hello world mylove
    return 0;
    }

原文地址:https://www.cnblogs.com/schut/p/8552082.html

时间: 2024-08-28 14:57:34

C语言之随机数和字符串输入输出的相关文章

《你必须知道的495个C语言问题》笔记--标准输入输出

getchar的返回值 这样的代码有什么问题: char c; while((c = getchar()) != EOF).... getchar返回值变量必须是int型.因为EOF通常定义为-1,二十进制为255的字符会被符号扩展,和EOF比较时会相等,从而 过早第结束输入. feof函数的使用 为什么这些代码最后一行复制了两遍? #include <stdio.h> #include <unistd.h> #include <fcntl.h> #define MAX

C语言中随机数相关问题

用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand(unsigned int seed); //为rand设置"种子"的值 srand()就是给rand()提供种子seed,如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的.通常的做法是以这样一句代码: srand((unsigned)time(NULL)); 来取

字符串输入输出

关于字符串输入输出应该是最简单的问题,但是如果能运用一些小技巧的话就能提高代码效率,还是要总结下 下面代码的意思大概是输入句子错位了的时候给恢复原来的句子.比如输入“O S, GOMR”输出"I AM FINE"; #include<stdio.h> int main() { char s[]="`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"; int i; char c; while ((c=getch

c语言 C++ 读一字符串

标准c语言 #include <stdio.h> //---------回车被第一个 gets(s) 接收 char s[100]; // -----直接换行,,,,,少一行 int main(int argc, char *argv[]) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { gets(s); puts(s); } return 0; } #include <stdio.h>      

C语言调用汇编实现字符串对换

1. 前面配置arm交叉编译环境. 2. 配置好qemu-arm C语言代码string-switch.c: #include <stdio.h> #include <stdlib.h> extern void strswp(char *str1, char *str2); int main(void) { char str1[10] = "123456789"; char str2[10] = "abcde"; strswp(str1, s

C语言生产随机数的方法

尽管在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字的重复率很低,以至于它们看起来是随机的.实现这一功能的程序叫做伪随机数发生器.有关如何产生随机数的理论有许多,这里不讨论这些理论及相关的数学知识.因为讨论这一主题需要整整一本书的篇幅.这里要说的是,不管你用什么办法实现随机数发生器,你都必须给它提供一个被称为"种子(seed)"的初始值,而且这个值最好是随机的,或者至少是伪随机的."种子"的值通常是用快速计数寄存器或移位寄存器来生成的.本文中,笔者将

c语言字符数组与字符串的使用详解

转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.

C语言--二维数组,字符串数组,多维数组

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // int a[2][3]={ // {1,2,3}, // {4,5,6} // }; // int a[2][3]={1,2,3,4,5,6}; // //打印单个元素 // printf("%d",a[1][1]); // //元素没赋全,默认为0 // int b[2][3]={{1,2,3},{4}}; // /

用c语言产生随机数的方法

用c语言产生随机数的方法 一. //************************************ 伪随机数 在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态分布,从而相当于产生了随机数,但这不是真正的随机数. rand(产生随机数)表头 #include<stdlib.h>定义函数 int rand(void)函数说明rand()会返