动态 版块 发帖 消息 我的
小绿叶技术博客
小绿叶技术博客
小绿叶技术Lv150   
c 语言基础-函数-指针     





#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();

}







 0  已被阅读了205次  楼主 2022-12-12 17:08:07
回复列表

回复:c 语言基础-函数-指针

guest
登录之后更精彩~
Powered by HadSky 7.7.16
© 2015-2023 PuYueTian
您的IP:8.219.134.200,2023-02-01 15:46:07,Processed in 0.00778 second(s).
Powered by HadSky
小绿叶技术博客