当前位置: 首页 > news >正文

嵌入式字符串解析自我批斗练习

1.解析url

第一次尝试

#include "stdio.h"
#include "string.h"// 输入: "?name=John&age=30&city=New%20York"
// 输出: {name: "John", age: "30", city: "New York"}
void parseUrlParams(char* url)
{char *arry[10],*clear,*prit;int i = 0;arry[i] = strchr(url,'=');while(arry[i] != NULL){i++;arry[i] = strchr(url,'=');}clear = strchr(url,'=');while(clear != NULL){*clear = NULL; }sscanf(prit,"{name: %s, age: %s, city: %s}",arry[0]+1,arry[1]+1,arry[2]+1);printf("%s",prit);
}void main(void)
{char *strin = "?name=John&age=30&city=New%20York";parseUrlParams(strin);
}
结果:段错误
错误原因:

1.字符串常量不能修改

在c语言中,字符串常量只存储在只读内存区。当尝试修改他们(*clear = NULL);时会导致段错误,可以使用拷贝的方式修改

2.strchar使用错误

arry[i] = strchr(url, ' = ');每次都从字符串开头寻找,会导致死循环因为寻找的都是同一个即第一个' ='

3.指针操作错误

*clear = NULL; 应该使用'\0'

4.指针操作错误

*clear = NULL 应该是'\0' 

5.未初始化指针

sscanf(prit,...) 中 prit指针从未被赋值,会导致未定义行为

6.sscanf格式错误

7.url解码缺失

没有处理%20等url编码字符

答案:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
// 输入: "?name=John&age=30&city=New%20York"
// 输出: {name: "John", age: "30", city: "New York"}
void parseUrlParams(const char* url)
{if(*url == '?') url++;char *copy = strdup(url);char *token = strtok(copy,"&");printf("{");int frist = 1;while(token){char* eq = strchr(token,'=');if(eq){*eq = '\0';char *key = token;char *value = eq + 1;for(char *p = value; *p ; p++){if(*p == '%' && p[1] == '2' &&p[2] == '0'){*p = ' ';memmove(p+1,p+3,strlen(p+3)+1);}}if(!frist) printf(", ");printf("%s: \"%s\"",key,value);frist = 0;}token = strtok(NULL,"&");}printf("}\n");free(copy);
} void main(void)
{char *strin = "?name=John&age=30&city=New%20York";parseUrlParams(strin);
}

http://www.dtcms.com/a/462835.html

相关文章:

  • PID控制器的不同的传递函数与参数形式
  • 网站建设与企业发展平面设计兼职接单
  • 网站 模板 下载青岛学网站建设的学校
  • vue啊哈哈哈哈哈哈哈哈
  • 广州网站设计实力乐云seo国外做美食的网站
  • Git安装与配置:操作步骤+Gitee绑定
  • 深圳网站建设补助网站非法篡改
  • C语言字符串安全查找 :strchr_s、strrchr_s、strstr_s
  • 微观世界的“尺子”,数码显微测量仪的原理与多元应用
  • jsp网站开发实例视频网站自助建设平台百度
  • 海思 / ASR / 展锐芯片实测:2025 随身 WiFi 选购核心参数与场景适配方案
  • 条件语句练习题
  • JLINKKeil调试 软硬件版本驱动对齐
  • wordpress 模板层次结构信息图百度网站关键词优化在哪里做
  • 天津做网站外包公司有哪些网站打开的速度特别慢的原因
  • ElasticSearch与Kibana 入门指南(7.x版本)
  • LLM 与强化学习的新范式:Agentic RL 研究综述
  • wordpress 标签打不开外贸网站推广seo
  • 深圳租赁住房和建设局网站网站设计定位
  • 公司网站建设会议纪要全球速卖通企业类型
  • 一、十天速通Java面试(第三天)
  • 网站怎么seo关键词排名优化推广石家庄专业信息门户网站定制
  • 十堰为企业做网站的单位wordpress建m域名网站
  • anaconda安装及使用
  • 惠来做网站专门做门的网站
  • 合肥专业网站排名推广wordpress显示近几篇微博
  • 智能推送定义怎么写
  • 认识Emitter:进程内的事件处理专家
  • RDK X5 镜像备份(详细)
  • 郑州建网站企业seo核心技术排名