一些常用的的C语言函数原型

举报
矜辰所致 发表于 2022/09/25 06:30:41 2022/09/25
【摘要】 在平时使用中需要用到的一些函数原型 现在既然开始写博客了,就把遇到过得,一点一点放上来。 ..添加目录栏目 2021/9/17 123 目录 1、判断系统是大端系统还是...
在平时使用中需要用到的一些函数原型
现在既然开始写博客了,就把遇到过得,一点一点放上来。
..添加目录栏目 							2021/9/17      

  
 
  • 1
  • 2
  • 3

1、判断系统是大端系统还是小端系统

    #include <stdio.h>
    /*
    小端系统: 低位数据存储在地地址内存中
    大端系统: 低位数据存储在高地址内存中

       0 x 00 00 00 01

    小端系统: [0X01][ 0 ][ 0 ][ 0 ]
               低   --------->   高
    大端系统: [0][ 0 ][ 0 ][ 0X01 ]
              低   --------->   高

    */
    int isLittleEnd()
    {
        union 
        {
            int i;
            char a[4];
        }test ={0};

        test.i = 1;
        return (test.a[0] == 1); //返回1,小端系统
    }
    int main(){
        printf("System Endian:%d\n",isLittleEnd());
        return 0;
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

在这里插入图片描述

2、交换两个变量的值

#define SWAP3(a,b)  \
{					\
	 a = a ^ b;     \
	 b = a ^ b; 	\
	 a = a ^ b;		\
}

#define SWAP2(a,b)  \
{					\
	 a = a + b;     \
	 b = a - b; 	\
	 a = a - b;		\
}

#define SWAP1(a,b)  \
{					\
	 int t = a;     \
	 a = b;    		\
	 b = t;    		\
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

3、获取字符串中两个字符之间的的数据

/*C获取字符串中两个字符之间的的数据*/
#include <stdio.h>
#include <string.h>
#define SUCCESS 0
 
int test(char *pcBuf, char *pcRes)
{
	char *pcBegin = NULL;
	char *pcEnd = NULL;
 
	pcBegin = strstr(pcBuf, ",");
	pcEnd = strstr(pcBuf, "3");
 
	if(pcBegin == NULL || pcEnd == NULL || pcBegin > pcEnd)
	{
		printf("Mail name not found!\n");
	}
	else
	{
		pcBegin += strlen(":");
		memcpy(pcRes, pcBegin, pcEnd-pcBegin);
	}
 
	return SUCCESS;
}
//+MIPLREAD:0,18172,3200,0,5750

int main()
{
	//char cBuf[40960] = {"MAIL FROM:<test1@163.com>\r\n"};
    char cBuf[40960] = {"+MIPLREAD:0,18172,3200,0,5750"};
	char cRes[40960] = {0};	
 
	test(cBuf, cRes);
 
	printf("%s\n", cRes); 
	return SUCCESS;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

在这里插入图片描述

4、组合字符串

#include<stdio.h>

void main(void)
{
    int a = 0;
    signed char buffer[20];
    signed char *AT ="AT+RST";
    signed char *BACK ="-13212";
    signed char *END ="+END";
    sprintf(buffer,"%s%s",AT,BACK);
    printf("%s\r\n",buffer);
    for(a=0;a<20;a++){
        buffer[a]=0;
    }
    sprintf(buffer,"%s,%s,  ,",AT,BACK);
    printf("%s\r\n",buffer);
    sprintf(buffer,"%s%s",buffer,END);
    printf("%s\r\n",buffer);
    sprintf(buffer,"%s%s",buffer,buffer);
    printf("%s\r\n",buffer);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在这里插入图片描述

不仅仅是字符串,还可以组合 json 的数据:

#include<stdio.h>

#define ONENET_POST_BODY_FORMAT "{\"id\":123,\"dp\":%s}"

void main(void)
{
    char jsonBuf[178];
    char param[82];
    int a = 0;
    float T= 25.6;
    float H= 30;
    float mw= 90;
    signed char buffer[20];
    signed char *AT ="AT+RST";
    signed char *BACK ="-13212";
    signed char *END ="+END";
    sprintf(buffer,"%s%s",AT,BACK);
    sprintf(param, "{ \"tem\":[{\"v\":%.2f}] ,\"hum\":[{\"v\":%.2f}] ,\"adc\":[{\"v\":%.2f}] }", T,H,mw); //我们把要上传的数据写在param里
    printf("%s\r\n",buffer);
    // for(a=0;a<20;a++){
    //     buffer[a]=0;
    // }
    // sprintf(buffer,"%s,%s,  ,",AT,BACK);
    // printf("%s\r\n",buffer);
    // sprintf(buffer,"%s%s",buffer,END);
    // printf("%s\r\n",buffer);
    // sprintf(buffer,"%s%s",buffer,buffer);
    // printf("%s\r\n",buffer);
    printf("%s\r\n",param);
    sprintf(jsonBuf, ONENET_POST_BODY_FORMAT, param);
    printf("%s\r\n",jsonBuf);
    
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

在这里插入图片描述

5、把小写字母变成大写字母

void l_to_b(char s[], int len)
{
	int i=0;
	for(i=0;i<len;i++)
		if(('a' <= s[i]) && (s[i] <= 'z')) //小写的 a-z
			s[i] = (s[i] - 'a') + 'A'
}
int main()
{
	char str[] = "qianzhiheng test";
	1_to_b(str, strlen(str));
	printf("%s\n",str);
	return 0;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6、生成随机数

使用srand();设定种子
然后使用rand()生成随机数。如果 不使用 srand(); ,和使用srand();设置为某个常数一致,会变成伪随机。

#include <stdlib.h>

u16 iseed;

//在 srand(iseed) 前得进行操作,使得 iseed 每次不一样

srand(iseed); //

int random(void){
    int i;
    i = rand() % 100; //0到100之间的随机数
		if(i == 0)i++; //这个示例返回的随机数设定不能是0 ,所以有这么一步 
    return i;   
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

文章来源: blog.csdn.net,作者:矜辰所致,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_42328389/article/details/119512702

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。