ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c语言基础整理

2021-12-14 13:58:56  阅读:143  来源: 互联网

标签:语言 valist int s1 基础 字符串 tm 整理 struct


一些开发中用到的接口整理

int ret=strspn(str1, str2)
表示str1中有几个是被str2中有的
比如str1=255,str2=123456
那ret=3,一般这个用法主用用于检测str1中全是数字,组合用法就是
strspn(str1, “0123456789”) == strlen(str1),表示所有str1全是数字

整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。

auto 存储类是所有局部变量默认的存储类。
auto 只能用在函数内,即 auto 只能修饰局部变量

register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。

static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件中

C 语言不支持在调用函数时返回局部变量的地址,除非定义局部变量为 static 变量。
int * getRandom( ) { static int r[10]; int i; /* 设置种子 */ srand( (unsigned)time( NULL ) ); for ( i = 0; i < 10; ++i) { r[i] = rand(); printf("%d\n", r[i] ); } return r; }
这个返回值r要带static 否则会出错

strcmp(s1, s2);//用来判断字符串是否相等
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。

strstr(s1, s2);//通过返回值判断,s2是s1的子串,返回值>0
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

strchr(s1, ch);//主要用于切割字符串的使用,通过返回s1中第一次出现ch的位置来实现
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。

fopen和open的区别

C 实现可变参数
#include <stdio.h>
#include <stdarg.h>

double average(int num,…)
{

va_list valist;
double sum = 0.0;
int i;

/* 为 num 个参数初始化 valist */
va_start(valist, num);//初始化valist

/* 访问所有赋给 valist 的参数 */
for (i = 0; i < num; i++)
{
   sum += va_arg(valist, int);//获取int类型的值并指向下一个变量的位置
}
/* 清理为 valist 保留的内存 */
va_end(valist);

return sum/num;

}

int main()
{
printf(“Average of 2, 3, 4, 5 = %f\n”, average(4, 2,3,4,5));
printf(“Average of 5, 10, 15 = %f\n”, average(3, 5,10,15));
}

fprintf
函数根据指定的格式(format),向输出流(stream)写入数据

sprintf
函数根据指定的格式(format),向字符串中写入数据

int isalnum(int c);
检查所传的字符是否是字母和数字
如果 c 是一个数字或一个字母,则该函数返回非零值,否则返回 0。

svn上传默认忽略动态库的问题
打开
Vi ~/.subversion/config
将这条语句
#global-ignores = .o .lo .la .al .libs .so .so.[0-9]* .a .pyc .pyo # .rej ~ ## .#* .*.swp .DS_Store
改成 global-ignores =

C 库函数 char *ctime(const time_t *timer) 返回一个表示当地时间的字符串,当地时间是基于参数 timer。

C 库函数 struct tm *localtime(const time_t *timer) 使用 timer 的值来填充 tm 结构。timer 的值被分解为 tm 结构,并用本地时区表示。

C 库函数 char *asctime(const struct tm *timeptr) 返回一个指向字符串的指针,它代表了结构 struct timeptr 的日期和时间

ctime和locatime都是把时间戳返回当地的时间,ctime返回的是char *,locatime返回的是struct tm 结构体,asctime可以把struct tm 结构体转化成字符串,列如:Sat Mar 25 06:10:10 1989

C 库函数 struct tm *gmtime(const time_t *timer) 使用 timer 的值来填充 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。

gmtime和localtime用法一样,功能也一样

C 库函数 time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。//常用来把标准时间转化成时间戳

C 库函数 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。

strftime是把结构体中struct tm中的数据进行按照第三个参数的格式提取到第一个参数的字符串中。

Json.xml

花括号保存对象,也称一个文档对象
• 方括号保存数组,每个数组成员用逗号隔开,并且每个数组成员可以是文档对象或者数组或者键值对。

cJSON_Parse 解析接送数据包

cJSON_GetObjectItem 解析花括号,对应的是对象
cJSON_GetArrayItem 解析中括号,对应的是数组,数组里面可以包含多个对象

所以再解析到 cJSON_GetArrayItem 之前发现有多个对象时,通过cJSON_GetArraySize可以解析出有几个对象

类似于
arrayNum = cJSON_GetArraySize(data);
for(i = 0; i < arrayNum; i++)
{
SubData = cJSON_GetArrayItem(data, i);//解析第一个对象
if (NULL == SubData)
{
printf(“dataList error\n”);
goto error;
}
}

指针变量是存储指针的,一旦重启,内存中地址没变的情况下。里面数值是会发生改变的,所以在存储文件到flash时,存储字符数组能保证数据不出问题。

npos是一个常数,用来表示不存在的位置,string::npos代表字符串到头了结束了。

int idx = str.find(“abc”);
if (idx == string::npos)

str字符串中没有找到abc这个字符串 就会返回string::npos

取固定字节长度的字符串,拼接字符串最后一个字符不是’\0’时,会出现乱码,
可以用memcpy(b,(char *)a,9);//从a中拷贝固定的9字节到b中,不会出现乱码

传递指针可以保证接口调用之后值发生变化,指的是接口的参数是指针就可以了,保证是对指针操作就可以改变值

#ifndef min
#define min(a,b) ((a) < (b) ? (a) : (b))
#endif

标签:语言,valist,int,s1,基础,字符串,tm,整理,struct
来源: https://blog.csdn.net/qq_42981739/article/details/121925731

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有