#include <stdio.h> #include <string.h> #include <time.h> #include <stdlib.h> // popen 函数使用 // 引用函数库,相当于 linux shell 中 apt install xxx 安装包,安装后才能使用这个包中的命令 char shuzu () { char str[99]; // 定义数组元素个数99 没有赋值 strcpy(str,"This is string.h library function"); // 字符串复制: 1.接收字符串变量 str; 2.定义字符串 puts(str); // puts 打印数组内容 memset(str,'3',6); // 替换函数: 1.被替换的数组; 2.替换目标字符串; 3.替换多少个位置; 字符串前12 个被替换成0 puts(str); // 字符串标准输出 char a[99]; strcpy(a,"zifuhcuan biaozhun \\n $a "); puts(a); printf("换行符号,需要加转译: %s\n", a); int aa[3]={1111,22222,999239}; // 定义数组aa 有三个元素,大括号顺序赋值 int n; // 定义循环变量,循环指定打印: aa[1] 到 aa[3] 之间的所有数组 for (n=0;n<3;n++){ printf("打印数组: %d\n", aa[n] ); } return(0); // 该函数执行完,返回 0 } int zhizhen() { FILE *fp; // 定义指针变量 char c[] = "This is runoob"; // 定义数组,元素个数不固定 char dp[20]; fp = fopen("file.txt", "w+"); // fopen 打开文件方式:w+ 读写 fwrite(c, strlen(c) + 1, 1, fp); // write [ raɪ t ] 写;定义写入规则, 将数组 c 中的内容写入到 fp 文件中 // 第1个:被写入的内容;2.写入的元素大小:strlen 计算字符串长度;3.元素个数; 4.指针文件 printf("字符串长度 %d\n", strlen(c)+1); // strlen 计算变量字符串的长度 再 +1 fseek(fp, 0, SEEK_SET); // 写入文件的位置:1.指针文件,2.偏移字节量(0 不偏移),3. 开始偏移写入位置:SEEK_SET 文件开头,SEEK_CUR 指针当前位置, SEEK_END 文件末尾 fread(dp, strlen(c)+1, 1, fp); // 读取函数: 1.内存块指针; 2.读取每个元素的大小,字节;3.元素个数; 指针文件 printf(" 再次读取文件查看内容: %s\n", dp); fclose(fp); // 关闭文件指针 return(0); } int popencs(void) { // popen 执行shell 命令并返回结果 #define BUF_SIZE 1024 // 定义常量 值为1024 char buf[BUF_SIZE]; // 定义数组buf 长度 为 1024 FILE * p = NULL; // 定义指针为空 p = popen("ifconfig enp2s0", "r"); // 读取shell 命令结果: r 为读取, w 写入:通常是创建文件,或者启动服务 if (!p) { fprintf(stderr, "Erro to popen"); } while (fgets(buf, BUF_SIZE, p) != NULL) { // fgets 读取并存储: 1.储存到数组 buf; 2.读取最大字符数 1024 字; 3.对象指针字符流 fprintf(stdout, "%s", buf); // 打印:发送格式化输出流到 stdout } pclose(p); // 关闭文件指针 return 0; } int timehs () { time_t curtime; time(&curtime); printf("当前时间 = %s", ctime(&curtime)); return(0); } // 结构体数组指针 void zhizhenjiegou () { struct jiegou { // 定义结构体名 jg; 成员: sum ,name长度20 ,sex, score 相似于数据库建表 int num; char name[20]; char sex; int age; }; struct jiegou stu[3] = {{10101, "Li Lin", 'M', 18}, {10102, "Zhang Fun", 'M', 19}, {10103, "Wang Min", 'F', 20}}; // 定义结构体 jg 的数组变量 stu 简称:结构体变量 ; 类似于数据库 jg 中的表 stu // 结构体变量 stu 有三组数据,相似于数据库表有三个人的学号,名字等等 struct jiegou *p; // 定义指针p为:结构体(数据库); 三个等价 stu.num 和 (*p).num 和 p->num // p = &stu; 这个是读取内存地址,符号 & printf("No. name sex age\n"); for(p=stu; p<stu+3;p++) // 定义指针为:结构体变量(表)中的元素,循环次数为3次 printf("%5d %-12s %-8c %4d\n", p->num, p->name, p->sex, p->age); // %-12s 左对齐输出字符串, %-2c 左对其输出单个字符 } // c 结构体:https://www.runoob.com/w3cnote/c-structures-intro.html void main() // 定义任意类型 main 函数 { shuzu(); // 执行数组函数 char a[]="开始执行 zhizhen 写入文件函数,前提需要创建 file.txt"; printf(" 字符数组赋值中文 格式 a[] \n %s", a); zhizhen(); // 执行指针函数 popencs(); timehs(); zhizhenjiegou(); }