赞
踩
1、strstr函数
用于在一个字符串中查找另一个字符串第一次出现的位置。
函数原型如下:
- char *strstr(const char *haystack, const char *needle);
-
- haystack 是要搜索的字符串,needle 是要查找的子字符串。
- 函数返回一个指向第一次出现 needle 的位置的指针,如果没有找到则返回 NULL。
2、strcmp函数
一个字符串处理函数,用于比较两个字符串的大小关系。
函数原型如下:
- int strcmp(const char *str1, const char *str2);
-
- 其中 str1 和 str2 分别是要比较的两个字符串。
- 函数返回一个整数值,表示两个字符串的大小关系:
- 如果 str1 小于 str2,则返回一个负数。
- 如果 str1 等于 str2,则返回 0。
- 如果 str1 大于 str2,则返回一个正数。
3、strtok函数
用于将字符串分割成子字符串的函数,通常用于按照指定的分隔符将一个字符串拆分成多个部分。
函数原型如下:
- char *strtok(char *str, const char *delim);
-
- str 是要分割的字符串,delim 是用来指定分隔符的字符串。
- 第一次调用 strtok 时,需要传入要分割的字符串 str,后续调用则传入 NULL。
- 每次调用 strtok 都会返回一个指向下一个子字符串的指针,直到字符串被完全分割。
4、atoi函数
用于将字符串转换为整数(int
类型)
函数原型如下:
-
- int atoi(const char *str);
-
- str 是一个指向以 null 结尾的字符串的指针,表示要转换为整数的字符串。
- atoi 函数会将输入的字符串转换为整数值,并返回转换后的整数。如果字符串的开头是数字字符(0-9),atoi 会从这个位置开始转换,直到遇到非数字字符为止。如果字符串的开头不是数字字符,则返回 0。
5、strcpy函数
将一个字符串拷贝到另一个字符串中
函数原型如下:
- char *strcpy(char *dest, const char *src);
-
- dest 是目标字符串,即要将源字符串拷贝到的位置。
- src 是源字符串,即要被拷贝的字符串。
- strcpy 函数会将源字符串的内容复制到目标字符串中,直到遇到源字符串的结束符(\0)为止。
- 目标字符串必须足够大,以容纳源字符串的内容,否则可能会导致缓冲区溢出。
6、strchr函数
用于在字符串中查找指定字符的第一个匹配位置。
函数原型如下:
- char *strchr(const char *str, int c);
-
- str 是要在其中查找字符的字符串。
- c 是要查找的字符。
- strchr 函数会在 str 指向的字符串中查找第一个匹配字符 c 的位置,并返回指向该位置的指针。
- 如果找到了匹配字符,返回的指针指向该字符;如果未找到匹配字符,返回空指针(NULL)。
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- char str[300]= "{\"method\":\"thing.service.property.set\",\"id\":\"463160838\",\"params\":{\"Humidity\":25,\"temperature\":25,\"infor\":\"ijj\"},\"version\":\"1.0.0\"}";
-
- int humidity,temperature;
- char infor[100];
-
- void parseJSON1(char *jsonData) {
- char *token = strtok(jsonData, "{},\":");
- while (token != NULL) {
- printf("%s\r\n",token);
- if (strcmp(token, "Humidity") == 0) {
- token = strtok(NULL, "{},\":");
- humidity = atoi(token);
- } else if (strcmp(token, "temperature") == 0) {
- token = strtok(NULL, "{},\":");
- temperature = atoi(token);
- }
- else if(strcmp(token, "infor") == 0)
- {
- token = strtok(NULL, "{},\":");
- strcpy(infor,token);
- }
- token = strtok(NULL, "{},\":");
- }
- }
-
- int main()
- {
- parseJSON1(str);
- printf(" humidity %d\r\n",humidity);
- printf(" temperature %d\r\n",temperature);
- printf(" infor %s\r\n",infor);
- }
切记:调用完parseJSON1(str);函数后str的值会被改变,所以我们应该先拷贝一份值,在传入
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- char str[300]= "{\"method\":\"thing.service.property.set\",\"id\":\"463160838\",\"params\":{\"Humidity\":25,\"temperature\":25,\"infor\":\"ijj\"},\"version\":\"1.0.0\"}";
-
- int humidity,temperature;
- char infor[100];
-
- void parseJSON1(char* jsonData) {
-
- char *token = strtok(jsonData, "{},\":");
- while (token != NULL) {
- printf("%s\r\n",token);
- if (strcmp(token, "Humidity") == 0) {
- token = strtok(NULL, "{},\":");
- humidity = atoi(token);
- } else if (strcmp(token, "temperature") == 0) {
- token = strtok(NULL, "{},\":");
- temperature = atoi(token);
- }
- else if(strcmp(token, "infor") == 0)
- {
- token = strtok(NULL, "{},\":");
- strcpy(infor,token);
- }
- token = strtok(NULL, "{},\":");
- }
- }
-
-
- int main()
- {
- char temp[200];
- strcpy(temp,str);
- parseJSON1(temp);
- printf(" humidity %d\r\n",humidity);
- printf(" temperature %d\r\n",temperature);
- printf(" infor %s\r\n",infor);
- }
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- char str[300]= "{\"method\":\"thing.service.property.set\",\"id\":\"463160838\",\"params\":{\"Humidity\":25,\"temperature\":25,\"infor\":\"ijj\"},\"version\":\"1.0.0\"}";
-
- int humidity,temperature;
- char infor[100];
-
- void parseJSON2(char *jsonData) {
- char* softwareInfoStart = strstr(jsonData, "infor");
- if (softwareInfoStart != NULL)
- {
- softwareInfoStart += 8;
- char* softwareInfoEnd = strchr(softwareInfoStart, '"');
- if (softwareInfoEnd != NULL)
- {
- int length = softwareInfoEnd - softwareInfoStart;
- strncpy(infor, softwareInfoStart, length);
- infor[length] = '\0';
- }
- }
- }
-
- int main()
- {
- parseJSON2(str);
- printf(" humidity %d\r\n",humidity);
- printf(" temperature %d\r\n",temperature);
- printf(" infor %s\r\n",infor);
- }
- #include <stdio.h>
- #include <string.h>
-
- int main() {
- char input[] = "{\"method\":\"thing.service.property.set\",\"id\":\"463160838\",\"params\":{\"Humidity\":25,\"temperature\":25,\"infor\":\"ijj\"},\"version\":\"1.0.0\"}";
- int id,humidity,temperature;
- char infor[100];
-
- sscanf(input, "{\"method\":\"thing.service.property.set\",\"id\":\"%d\",\"params\":{\"Humidity\":%d,\"temperature\":%d,\"infor\":\"%s\"},\"version\":\"1.0.0\"}",&id ,&humidity,&temperature,infor);
-
- //因为char型的地址是连续的,所以需要人为的加入\0结束符
- for(int i=0;;i++)
- {
- if(infor[i]=='"')
- {
- infor[i]='\0';
- break;
- }
- }
-
- printf("humidity:%d\n", humidity);
- printf("temperature:%d\n", temperature);
- printf("infor:%s\n", infor);
-
- return 0;
- }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。