1、C语言结构体在多个文件中使用的方法
//步骤1 //在头文件(mpu.h 文件)中对结构体类型进行定义 例: //定义结构体类型 struct MPU { short Acce[3]; short Gyro[3]; short Mag[3]; } //步骤2 //在需要使用上述结构体类型的 mpu.c 文件中定义结构体类型变量 //定义结构体类型变量 struct MPU mpu_value; //步骤3 //除 mpu.h mpu.c 文件,其他文件需要使用上述结构体类型变量时,需要在 mpu.h 文件中声明上述结构体类型变量为全局变量 extern struct MPU mpu_value;
2、strstr(str1,str2)函数
1 /* 2 strstr(str1,str2) 函数是字符串处理函数之一,位于头文件 “string.h” 3 定义:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址,否则,返回NULL。 4 */ 5 //举例说明 6 //包含 7 char str1 = "123456"; 8 char str2 = "235"; 9 strstr(str1,str2) = 23456; 10 //不包含 11 char str1 = "123"; 12 char str2 = "456"; 13 strstr(str1,str2) = NULL;
3.printf函数-输出函数-头文件“stdio.h”
1 //1.printf("字符串\n"); 2 # include <stdio.h> 3 int main(void) 4 { 5 printf("Hello World\n"); // \n表示换行 6 return 0; 7 }
8 //2.printf("输出控制字符",输出参数); 9 # include <stdio.h> 10 int main(void) 11 { 12 int i = 1; 13 printf("%d\n", i); /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/ 14 return 0; 15 }
16 //3.printf("输出控制符1 输出控制符2...",输出参数1,输出参数2,...); 17 # include <stdio.h> 18 int main(void) 19 { 20 int i = 1; 21 int j = 2; 22 printf("%d %d\n", i, j); 23 return 0; 24 }
25 //4.printf("输出控制符 非输出控制符",输出参数); 26 #include <stdio.h> 27 void mian(void) 28 { 29 int i = 1; 30 printf("%dKM\n",i);//其中%d为输出控制符,KM为非输出控制符 31 }
/*输出控制符*/ %d 按十进制整型数据的实际长度输出 %ld 输出长整型数据 %md m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于 m,则按实际位数输出 %u 输出无符号整型%c 用来输出一个字符 %f 用来输出实数,包括单精度和双精度,以小数形式输出%.mf 输出实数时小数点后保留 m 位 %o 以八进制整数形式输出 %s 用来输出字符串。用 %s 输出字符串同前面直接输出字符串是一样的。但是此时要先定义字符数组或字符指针存储或指向字符串 %x、%X、%#x、%#X) 以十六进制形式输出整数
四、C 转义字符
五、结构体的存储(Flash、EEPROM)
//利用结构体指针实现结构体数据类型的存储和读取 //有下面一个结构体 typedef struct { u8 Name;//名字 u8 Age;//年龄 u8 Score;//分数 }Student; //通过sizeof关键字可以获取这个结构体类型的存储空间为3字节
//存储 void Flash_Write(Student *data) { u8 i=0,temp=0; for(i=0;i<sizeof(*data);i++) { memcpy(&temp,((u8 *)(data))+i,1); Flash_Write_OneByte((Flash_Data+i),temp) } }
//读取-这里读取函数有误,实现方法为存储函数的反向应用
void flashGetSysData(SysData *data)
{
}
/*
输入参数“Student *data”为结构体类型的指针,data指向该结构体的首地址,“data+1”则会使该指针地址向后跳过3个字节,因为data是结构体类型的指针,且该结构体在内存中占用连续的3个字节,并被认为是一个变量,如果指针+1,其指向的地址将会向后跳入一个完整的结构体存储空间,即3个字节 如果需要使用这个指针访问该结构体的每一个成员变量,即每次指针+1,地址跳过1Byte,则需要将该结构体类型的指针转换为unsigned char类型的指针“(u8 *)(data)”,这时再+1,则会跳一个字节。 */