zoukankan      html  css  js  c++  java
  • 0037 fgets const

    /*
       
       1、fgets()
     
            该函数一个文件操作相关的函数
     
            暂时使用这个函数可以从键盘商接收一个字符串,保存到数组中
     
       原来接收字符串保存到数组中的方法
       
          char str[50];
     
         1) scanf("%s",str);  //缺点:不能接收空格
     
         2) gets(str);        //优点:可以接收空格
                               //会有一个警告,不安全的
                               //不安全:比如数组长度是50,如果我们输入的
                               //的长度正好是50个,此时把50个字符全部存到
                               //数组中,存在问题 因为没有空间存放字符串结束符
      
        fgets()是一个安全的字符串接收的函数
     
          char ch[5];  //如果使用fgets此时数组中最多存放4个可见字符
                       //会自动的把数组的最后一个元素存放
     
        fgets()使用格式:
     
              fgets(数组名,数组长度,stdin);
     
     
        fputs();也是一个文件操作相关的函数
        格式:
     
           fputs(数组名,stdout);
     
     
     
     */
    
    
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, const char * argv[]) {
        
        char ch[5];
        //fgets从输入缓冲区读取一个字符串保存到字符数组中
        //当输入的字符串的长度大于数组的长度,此时fgets会自动的
        //把数组的最后一个元素变成
        //当输入的字符串的长度小于数组长度的时候,fgets还会接收回车
        fgets(ch, sizeof(ch), stdin);
        //去掉多余的
    
        if(ch[strlen(ch)-1]=='
    ') ch[strlen(ch)-1]='';
    
        //
      它的ascii码值10
        for (int i=0; i<5; i++) {
            printf("%d	",ch[i]);
        }
        
        //fputs是不会自动换行
        //fputs也不能进行格式化的输出
        //puts 可以自动换行
        fputs(ch, stdout);
        //printf("--->%s
    ",ch);
    
        
        
        return 0;
    }
    
    
    /*
        const使用的地方
     
     
        1)修饰变量
     
           int a = 10;
     
           printf("%d
    ",a);  //10
     
           a = 200;
     
           printf("%d
    ",a);  //200
     
        2)修饰指针变量
     
        3)修饰数组
     
     
     
     
     */
    
    
    #include <stdio.h>
    /**
     *  const修饰变量,使得变量变成常量
     */
    void test1(){
    
        //使用const修饰变量a
        const int a = 10;
        printf("%d
    ",a);  //10
        
        //a = 200;//read-only
        printf("%d
    ",a);  //200
    
    }
    /**
     *  用指针强制修改const常量
     */
    void test2(){
    
    
        //使用const修饰变量a
        const int a = 10;
        printf("%d
    ",a);  //10
        
        
        int *p = &a;  //
        *p = 100;  //强制修饰常量
        
        printf("%d,%d
    ",a,*p);  //
    
    }
    
    int main(int argc, const char * argv[]) {
        
        int a = 10;
        int b = 20;
        
        //定义个指针变量,p指向a
        //此处的const的作用是指针变量p的指向可以改变,但是指向的变量的值
        //不能改变的
        
        //1、const修饰的指针变量指向可变,指向的变量的值不可变
        const int *p = &a; //给p初始化
                   p = &b;  //重新修改了p的指向
        //*p = 1000;
        
        int const *p1 = &a;
                   p1 = p;  //p1的指向也是可以改变
    //    *p1 = 100;  p1指向的变量的值是不能改变的
        
        //2、const修饰的指针变量,指针变量指向的变量值可以变,指向不能变
        
        int * const p2 = &a;
        *p2 = 2000; //值可以改变
        //p2  = &b;  //p2的指向不能变
        
        //3、const修饰的指针变量的指向和值,都不能改变
        const int * const p3 = &a;
    //    p3  = &b;   //只想不能变
    //    *p3 = 100;  //指向的变量的值也不能变
        
        
        /*
         
         记忆技巧:
         
            看 const 和 * 的位置
         
            如果 const 在 * 的左侧  表示指针变量指向的变量的值不能变,但是指向可以改变
         
            如果 const 在 * 的右侧  表示指针变量指向的变量的值可以改变,但是指向不可以改变
         
            如果 const 出现在 *的两侧,表示指针变量的指向和值都不能改变
         
         
         */
        
        printf("a = %d
    ",a);
    
        
        return 0;
    }
    
    
  • 相关阅读:
    memmove、memccpy和memcpy
    NSLocalizedString不起作用
    sign starfieldtech
    微软推荐的Get a code signing certificate流程和链接
    Driver Signing changes in Windows 10
    delphi 打开文件夹并定位到一个文件(关键是/select参数)
    key转成pvf
    nginx+apache+mysql+php+memcache+squid搭建集群web环境
    dddd
    Delphi系统变量:IsMultiThread对MM的影响
  • 原文地址:https://www.cnblogs.com/aiti/p/4669405.html
Copyright © 2011-2022 走看看