zoukankan      html  css  js  c++  java
  • C语言学习(三)

    一、数组、循环、判断条件

     

    #include<stdio.h>
    int main(){
        int a =100;
        int b =200;
        int i;
        int arr [5];
        if (a==100){
            if (b==200){
               printf("a 的值是 100,且 b 的值是 200
    " );
            }
            printf("a 的值是 100,且 b 的值是 %d 
    ",b );
        }else{
            printf("a 的值是 %d 
    ",a );
        }
    
        //数组
        for(i=0;i<5;i++){
           arr[i]=100+i;
        }
        printf("arr[4] 的值是 %d 
    ",arr[4]);
        return 0;
    }

    二、枚举:枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读

    案例:如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:

    #define MON 1
    #define TUE 2
    #define WED 3
    #define THU 4
    #define FRI 5
    #define SAT 6
    #define SUN 7
     
    enum DAY
    {
          MON=1, TUE, WED, THU, FRI, SAT, SUN
    };

    没有指定值的枚举元素,其值为前一元素加 1。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5

    #include <stdio.h>
    enum DAY{
     M,T,W,TH,F,SA,SU
    };
    
    int main()
    {
        enum DAY day;
        day = W;
        printf("%d 
    ",day);
        return 0;
    }

     

    /*linux socket AF_INET  UDP 编程示例,客户端,单进程单线程。*/
    #include <cstdio>
    #include <arpa/inet.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int main()
    {
        int cli_sock = socket(AF_INET, SOCK_DGRAM, 0);
        
        //conn_addr 是要连接的服务器地址结构
        struct sockaddr_in conn_addr;
        conn_addr.sin_family = AF_INET;
        conn_addr.sin_port = htons(8345);
        //conn_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
        //将 inet_addr() 改用 inet_pton() 这个现代的方法,支持 IPV4 和 IPV6
        if (inet_pton(AF_INET, "127.0.0.1", &conn_addr.sin_addr) == -1) {
            printf("inet_pton error
    ");
            close(cli_sock);
            return 0;
        }
        
        //serv_addr 是用来存储 recvfrom 中的地址结构
        struct sockaddr_in serv_addr;
        socklen_t serv_addr_len = sizeof(serv_addr);
        
        char c = 1, buf[255];
        int num = 0;
        while (c < 100) {
            sendto(cli_sock, &c, sizeof(c), 0,
                   (struct sockaddr*)&conn_addr,
                   sizeof(conn_addr) );
            int n = recvfrom(cli_sock, buf, sizeof(buf), 0,
                             (struct sockaddr*)&serv_addr,
                             &serv_addr_len );
                             
            if (n > 0) {
                num++;            
                //将 inet_ntoa() 改用 inet_ntop() 这个现代方法,支持 IPV4 和 IPV6
                //printf("recv data from %s : %d  %c
    ", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port), buf[0]);
                //INET_ADDRSTRLEN 是标识 IPV4 地址展现字符串的大小常量,INET6_ADDRSTRLEN是 IPV6 的
                char serv_ip[INET_ADDRSTRLEN];
                if (inet_ntop(AF_INET, &serv_addr.sin_addr, serv_ip, sizeof(serv_ip)) == NULL) {
                    printf("inet_ntop error
    ");
                    close(cli_sock);
                    return 0;
                }
                printf("recv data from %s : %d  %c
    ", serv_ip, ntohs(serv_addr.sin_port), buf[0]);
            }
            ++c;
        }
        c='';
        sendto(cli_sock, &c, sizeof(c), 0,
               (struct sockaddr*)&conn_addr,
               sizeof(conn_addr) );
        close(cli_sock);
        printf("
    num : %d
    ", num);
        return 0;
    }
    心有猛虎,细嗅蔷薇
  • 相关阅读:
    tracert命令与tracert (IP地址)-d有什么区别?
    linux下通过进程名查看其占用端口
    Union和Union All的区别
    外连接、内连接
    Linux 删除文件夹和文件的命令(强制删除包括非空文件)
    linux查看当前目录
    Linux chmod命令及权限含义
    MySQL的if,case语句
    case when
    java生成验证码图片
  • 原文地址:https://www.cnblogs.com/1314520xh/p/15077693.html
Copyright © 2011-2022 走看看