一、陣列、迴圈、判斷條件

 

  1. #include<stdio.h>
  2. int main(){
  3. int a =100;
  4. int b =200;
  5. int i;
  6. int arr [5];
  7. if (a==100){
  8. if (b==200){
  9. printf("a 的值是 100,且 b 的值是 200\n" );
  10. }
  11. printf("a 的值是 100,且 b 的值是 %d \n",b );
  12. }else{
  13. printf("a 的值是 %d \n",a );
  14. }
  15. //陣列
  16. for(i=0;i<5;i++){
  17. arr[i]=100+i;
  18. }
  19. printf("arr[4] 的值是 %d \n",arr[4]);
  20. return 0;
  21. }

二、列舉:列舉是 C 語言中的一種基本資料型別,它可以讓資料更簡潔,更易讀

案例:如果不用列舉,我們需要使用 #define 來為每個整數定義一個別名:

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

沒有指定值的列舉元素,其值為前一元素加 1。也就說 spring 的值為 0,summer 的值為 3,autumn 的值為 4,winter 的值為 5

  1. #include <stdio.h>
  2. enum DAY{
  3. M,T,W,TH,F,SA,SU
  4. };
  5. int main()
  6. {
  7. enum DAY day;
  8. day = W;
  9. printf("%d \n",day);
  10. return 0;
  11. }

 

  1. /*linux socket AF_INET UDP 程式設計示例,客戶端,單程序單執行緒。*/
  2. #include <cstdio>
  3. #include <arpa/inet.h>
  4. #include <sys/socket.h>
  5. #include <sys/types.h>
  6. #include <unistd.h>
  7. int main()
  8. {
  9. int cli_sock = socket(AF_INET, SOCK_DGRAM, 0);
  10. //conn_addr 是要連線的伺服器地址結構
  11. struct sockaddr_in conn_addr;
  12. conn_addr.sin_family = AF_INET;
  13. conn_addr.sin_port = htons(8345);
  14. //conn_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  15. //將 inet_addr() 改用 inet_pton() 這個現代的方法,支援 IPV4 和 IPV6
  16. if (inet_pton(AF_INET, "127.0.0.1", &conn_addr.sin_addr) == -1) {
  17. printf("inet_pton error\n");
  18. close(cli_sock);
  19. return 0;
  20. }
  21. //serv_addr 是用來儲存 recvfrom 中的地址結構
  22. struct sockaddr_in serv_addr;
  23. socklen_t serv_addr_len = sizeof(serv_addr);
  24. char c = 1, buf[255];
  25. int num = 0;
  26. while (c < 100) {
  27. sendto(cli_sock, &c, sizeof(c), 0,
  28. (struct sockaddr*)&conn_addr,
  29. sizeof(conn_addr) );
  30. int n = recvfrom(cli_sock, buf, sizeof(buf), 0,
  31. (struct sockaddr*)&serv_addr,
  32. &serv_addr_len );
  33. if (n > 0) {
  34. num++;
  35. //將 inet_ntoa() 改用 inet_ntop() 這個現代方法,支援 IPV4 和 IPV6
  36. //printf("recv data from %s : %d %c\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port), buf[0]);
  37. //INET_ADDRSTRLEN 是標識 IPV4 地址展現字串的大小常量,INET6_ADDRSTRLEN是 IPV6 的
  38. char serv_ip[INET_ADDRSTRLEN];
  39. if (inet_ntop(AF_INET, &serv_addr.sin_addr, serv_ip, sizeof(serv_ip)) == NULL) {
  40. printf("inet_ntop error\n");
  41. close(cli_sock);
  42. return 0;
  43. }
  44. printf("recv data from %s : %d %c\n", serv_ip, ntohs(serv_addr.sin_port), buf[0]);
  45. }
  46. ++c;
  47. }
  48. c='\0';
  49. sendto(cli_sock, &c, sizeof(c), 0,
  50. (struct sockaddr*)&conn_addr,
  51. sizeof(conn_addr) );
  52. close(cli_sock);
  53. printf("\nnum : %d\n", num);
  54. return 0;
  55. }