9.12 C语言知识大复习 gbk2utf8

字符串常量的写法:

char *s = "hello world";

最好改写成   const  char *s = "hello world";

因为修改其内容也会出错。

函数返回地址的区别:


函数返回地址,除了堆地址和字符串常量地址有意义。其他都无意义。

  1. #include <stdio.h>
  2. const char *getstr()
  3. {
  4. const char *s = "hello world"; //返回一个常量字符串地址是有效的
  5. return s;
  6. }
  7. int main()
  8. {
  9. printf("%s\n",getstr());
  10. return 0;
  11. }

错误:

  1. #include <stdio.h>
  2. const char *getstr()
  3. {
  4. char s[100] = "hello world"; //返回一个栈上的地址是无意义的,因为函数结束即释放
  5. return s;
  6. }
  7. int main()
  8. {
  9. printf("%s\n",getstr());
  10. return 0;
  11. }

++运算符你真的了解了吗

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 9;
  5. int a = ++i++; //先计算i++,得到的值是没有内存存放的,无法作为左值。无法再++i
  6. printf("%d\n",a);
  7. }

编译时就直接出错。

gbk2utf8

  1. int gbk2utf8(char *src, size_t *srclen, char *dest, size_t *destlen)
  2. {
  3. iconv_t cd = iconv_open("UTF8", "GBK"); //源字符串为GBK,目标UTF8
  4. if (cd == (iconv_t) - 1)
  5. {
  6. printf("open iconv error %s\n", strerror(errno));
  7. return -1;
  8. }
  9. size_t rc = iconv(cd, &src, srclen, &dest, destlen); //将src字符串转化为目标dest
  10. if (rc == (size_t) - 1)
  11. {
  12. printf("iconv error %s\n", strerror(errno));
  13. return -1;
  14. }
  15. iconv_close(cd);
  16. return 0;
  17. }

来自为知笔记(Wiz)

时间: 2024-10-09 21:49:27

9.12 C语言知识大复习 gbk2utf8的相关文章

《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Alpha-Beta剪枝

2014.07.08 22:43 简介: “搜索”与“剪枝”几乎是如影随形的.此处的“搜索”指的是带有回溯算法的深度优先搜索. 在之前的“Minimax策略”中我们给出了一个三连棋的程序,运行后你就知道计算一步棋要花多少时间. 为了计算最优的一步棋,我们可能需要递归9万多次.如果毫无疑问这种阶乘式的穷举过程必须通过剪枝来加速. 本篇介绍一种用于Minimax策略的剪枝思路——α-β剪枝. 剪枝的英语是pruning,所以不要想当然说成trimming. 图示: 在上一篇讲解Minimax策略的博

C语言排序算法复习

排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结: 首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大).主要包括冒泡排序,快速排序,选择排序,插入排序,希尔排序,归并排序,堆排序,8大的还有基数排序.各有各的版本,代码写法也各不相同.所以这里以整理思路为先,代码只是作为自己的一个备份. 搞清楚的概念:稳定排序和不稳定排序,就看序列中两个值相等的数,排完序之后的相对位置是否改变,如果改变了就不稳定. 内部排序和外部排序,只用到内存即可完成排序的就叫内部排

STM32F4 阿波罗 库函数与C语言知识

先聊一聊: 之前使用32都是用的库函数,但是没有理解为什么那么操作,有很多的文件我也不知道要看哪一个,感觉云里雾里,没有学清楚一件东西的感觉不太好,于是就在前几天一直跟着比较详细的视频学习.开始老师讲的方式是使用寻址以及寄存器的方式,我觉得这种比使用库函数要好理解,但是在几个视频之后会发现,开始讲解库了?嗯哼~我是拒绝的呀,带着十分抗拒的心情继续学习,这一次又有了一些不一样的理解. 为什么使用库呢?因为很多的函数都已经被32制造者写好了,就相当于我们喝红豆薏米粉吧(最近在喝,所以举个例子哈),没

《数据结构与算法分析:C语言描述》复习——第四章“树”——AVL树

2014.06.15 16:22 简介: AVL树是一种高度平衡的二叉搜索树,其命名源自于联合发明算法的三位科学家的名字的首字母.此处“平衡”的定义是:任意节点的左右子树的高度相差不超过1.有了这个平衡的性质,使得AVL树的高度H总是接近log(N),因此各种增删改查的操作的复杂度能够保证在对数级别.没有bad case是AVL树与普通的二叉搜索树的最大区别.为了实现平衡性质,我们需要记录每个节点的高度(或者平衡因子)来检测不平衡的情况.为了修正高度不平衡,需要用到“旋转”的方法,分为单旋转和双

Python编程中常用的12种基础知识总结

原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换目标: 将字符串line中的 overview.gif 替换成其他字符串 1 2 3 4 5 6 7 8 9 10 11 >>> lin

Python 编程中常用的 12 种基础知识总结

Python 编程中常用的 12 种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换 目标:将字符串line中的 overview.gif 替换成其他字符串 >>> line = '<IMG ALIGN="middle" SRC=\'#\'" /s

一个人赚的钱,12.5%来自知识,87.5%来自关系

斯坦福研究中心曾经发表一份调查报告,结论指出:一个人赚的钱,12.5%来自知识,87.5%来自关系.这个数据是否令你震惊? 黑马也需要伯乐 许多人以为,只有保险.业务员.记者等行业,才需要重视人脉,但在21世纪,无论哪个领域,人脉竞争力都是一个日渐重要的课题. 人脉资源是一种潜在的无形资产,是一种潜在的财富.人脉如同血脉.四通八达.错综复杂的血脉网络,是人的生命赖以存在的基础.在人们追求事业成功和幸福快乐的过程中,同样也存在一个类似血脉的系统,我们称它为人脉.如果说血脉是人的生理生命支持系统的话

FPGA知识大梳理(四)FPGA中的复位系统大汇总

本文整合特权(吴厚航)和coyoo(王敏志)两位大神的博文.我也很推崇这两位大神的书籍,特权的书籍要偏基础一下,大家不要一听我这么说就想买coyoo的.我还是那一句话,做技术就要step by step.闲言少叙,直入正题. 一,异步复位 先看这个电路,就是异步复位的例子.reset使用了reg的复位端 用代码实现的话是这个样子 1 module reset_test ( 2 clk , 3 rst_n , 4 i_data, 5 o_data 6 ); 7 8 input clk ; 9 in

《数据结构与算法分析:C语言描述》复习——第六章“排序”——冒泡排序

2014.06.17 01:04 简介: 冒泡排序是O(n^2)级别的交换排序算法,原理简单,属于必知必会的基础算法之一. 思路: 排序要进行N轮,每一轮从尾部逐个向前扫描,遇到逆序对就进行交换.确保每一轮把最小的元素交换到前面去.这个过程好比水中的气泡向上飘,所以叫冒泡排序.代码非常简单,所以语言描述反而显得麻烦了. 实现: 1 // My implementation for bubble sort. 2 #include <iostream> 3 #include <vector&