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

 

#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\n" );
}
printf("a 的值是 100,且 b 的值是 %d \n",b );
}else{
printf("a 的值是 %d \n",a );
} //数组
for(i=0;i<5;i++){
arr[i]=100+i;
}
printf("arr[4] 的值是 %d \n",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 \n",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\n");
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\n", 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\n");
close(cli_sock);
return 0;
}
printf("recv data from %s : %d %c\n", serv_ip, ntohs(serv_addr.sin_port), buf[0]);
}
++c;
}
c='\0';
sendto(cli_sock, &c, sizeof(c), 0,
(struct sockaddr*)&conn_addr,
sizeof(conn_addr) );
close(cli_sock);
printf("\nnum : %d\n", num);
return 0;
}

最新文章

  1. Environment 常用方法
  2. Javascript高级程序设计——面向对象之实现继承
  3. [水煮 ASP.NET Web API2 方法论](3-4)设置路由可选项
  4. php根据身份证号码计算年龄
  5. VS2012 professional和VS2012 Ultimate的区别
  6. sql之表的表达式
  7. Java第一次写的流布局图形界面,留个纪念
  8. OBJ解析
  9. My.Ioc 代码示例——实现自动注册/解析
  10. bit和sbit的区别
  11. 关于char/varchar(n)中n的探究:字符数or字节数
  12. 关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时仅仅能识别单声首22.05k採样率的问题
  13. 优盘(U 盘) 采用TLC, MLC, SLC芯片 的区别 与使用寿命
  14. 【iOS】7.4 定位服务-&gt;2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位
  15. 【Egret】Wing3发布移动APP功能,打包APK流程以及会遇到的问题
  16. java.io.IOException: No space left on device 错误
  17. Note: SE Class&#39;s Individual Project
  18. 每天CSS学习之border-spacing
  19. 187. Repeated DNA Sequences (String; Bit)
  20. activity背景毛玻璃效果

热门文章

  1. 【Android编程】android平台的MITM瑞士军刀_cSploit源码解析及中间人攻击复现
  2. Hibernate 这么硬核,为什么用的人少?
  3. DOS命令行(11)——更多实用的命令行工具
  4. MySQL:一条更新语句是如何执行的
  5. 精尽Spring Boot源码分析 - 序言
  6. 密码学系列之:twofish对称密钥分组算法
  7. Linux基础 -02
  8. 我是如何用redis做实时订阅推送的(转)
  9. Flask(9)- 蓝图的基本使用
  10. 新旧图号(图幅号)转换/计算/检查,经纬度转换计算,C#代码