zoukankan      html  css  js  c++  java
  • C语言基础(12)-输入和输出

    1. int scanf(const char *format, ...)

    说明:scanf用于通过控制台输入字符串。

    注意:

    (1).通过scanf()函数输入的字符串,系统会自动在其后面补一个0,scanf默认回车和空格都是代表输入完成,这样会导致无法输入一个完整的字符串。

    (2).scanf()函数并不检查char数组的下标,用户输入多少scanf就会保存多少,假如用户输入的字符长度超过了定义的char数组的长度,则会发生溢出。scanf函数是不安全的。

    示例:

    #include <stdio.h>
    #pragma warning(disable:4996)
    
    void main() {
    
        char a[10] = {0};
        scanf("%s",a);
        printf("%s
    ",a);
        system("pause");
    
    }

    2. char *gets(char *str)

    说明:从标准输入中读取一行,并将其存储到由str指向的字符串.

    注意:

    (1).gets函数只认回车代表输入完毕,空格只是一个普通字符而已,因此可以输出空格。

    (2).gets函数同样有缓冲区溢出的问题。使用gets和scanf都会面临缓冲区溢出的问题,因此两者都不安全。

     

    3. char *fgets(char *str, int n, FILE *stream)

    说明:从标准输入中读取一行,并将其存储到由str指向的字符串.

    注意:

    (1).fgets函数有三个参数。第一个参数是char的数组,第二个参数是标明这个数组的大小,第三个参数如果是通过键盘输入可以固定写为stdin.

    (2).fgets函数是安全的,不存在缓冲区溢出的问题。

    (3).fgets函数在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车键也作为字符串的一部分,因此使用fgets函数后在输出时,不需要添加 。当输入长度超过了缓冲区长度时,多出的部分将会被截断。

    #include <stdio.h>
    #pragma warning(disable:4996)
    
    void main() {
    
        char a[10] = {0};
        fgets(a,sizeof(a),stdin);
        printf("%s",a);
        system("pause");
    
    }

    4. int puts(const char *str)

    说明:输出一个字符串。

    注意:

    (1).puts函数打印字符串,与printf不同,puts会在最后自动添加一个’ ’

    (2).put函数不支持转义字符,比如%d,%s都不支持,puts函数只能简单输出一个字符串,而不能输出char,int,double等其它类型.

    #include <stdio.h>
    #pragma warning(disable:4996)
    
    void main() {
    
        char s[] = "hello world";
        puts(s);
        system("pause");
    
    }

    #include <stdio.h>
    #pragma warning(disable:4996)
    
    void main() {
    
        char s[] = "hello world";
        puts("%d%s",1,s);
        system("pause");
    
    }

    5. int fputs(const char *str, FILE *stream)

    说明:输出一个字符串。

    注意:

    (1).第一个参数是char的数组,第二个参数如果只是用puts在屏幕输出的话可以固定写成stdout

    (2).fputs不会自动输出一个

    (3).fputs是puts的文件操作版本

    #include <stdio.h>
    #pragma warning(disable:4996)
    
    void main() {
    
        char s[] = "hello world";
        fputs(s, stdout);
        system("pause");
    }

     

  • 相关阅读:
    C语言-结构体内存对齐
    Wireshark-配合tcpdump对Android(安卓)手机抓包
    Python-技巧
    矩阵白化
    非负矩阵分解(3):拉格朗日乘子法求解
    非负矩阵分解(2):算法推导与实现
    非负矩阵分解(1):准则函数及KL散度
    自适应滤波:递归最小二乘
    自适应滤波:最小二乘法
    自适应滤波:奇异值分解SVD
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/6297385.html
Copyright © 2011-2022 走看看