1.在C语言中,是将字符串作为字符数组来处理的,字符串是逐个存放到数组元素中的

例如用一个一维的字符数组存放字符串"I am a boy.",如下代码:
char c[12] = {'I','a','m','a','b','o','y','.'};
这个字符串的实际长度是11,数组长度是12,实际工作中,人们关心的往往是字符串的有效长度而不是字符串的数组长度,例如要打印字符串,这是就要知道字符串的实际长度。平时常使用下面三种方式来测定字符串的实际长度:

(1)在串值后面加一个不计入长度的结束标记字符,比如'0'来表示串值的终结
初始化一个字符串的方法如下,在最后添加'0'
char str[] = {'I','a','m','h','a','p','p','y','0'};
也可以直接使用字符串常量初始化字符数组(系统自动加上'0'),这种方法符合人们的习惯。
char str[] = "I am happy";
或者
char str[] = {"I am happy"};注意:不能使用下面的赋值方式:
char str[20];
str = "I am happy";
但可以用字符指针指向这个字符串:
char *str;
str = "I love China";
(2)将实际串长度值保存在数组0的下标下
#define MAXSIZE 20 //数组的长度
typdef char String[MAXSIZE+1];
初始化字符串的方法:
String t;
StrAssign(t,"I am happy");
int StrAssign(String T,char *chars)
{
T[0] = strlen(chars); //下标为0存放数组长度
for(i=1;i<=strlen(chars);i++) //下标位置从1开始存放数据
{
T[i] = *(chars+i-1);
}
return 1;
}
(3)使用结构体类型(自定义类型)
#define MAXSIZE 20
typedef struct{
char ch[MAXSIZE];
int len;
}String;
其中:MAXSIZE表示串的最大长度,ch是存储字符串的一维数组,len是字符串的长度
初始化函数示例:
String t;
StrAssign(&t,"I am happy");
int StrAssign(String *t,char *chars)
{
int i;
if(strlen(chars)>MAXSIZE+1) //字符串的长度大于数组的长度,操作失败,返回0
return 0;
for(i=0;i<strlen(chars);i++)
{
t->ch[i] = *(chars+i);
}
t->len = strlen(chars); //数组的长度
return 1; //返回1,操作成功
}说明:这里的StrAssign函数的参数t使用的是指针,是因为结构体变量做做形参,用法和普通变量一样属于值传递方式,在子函数中要给t赋值,所以输入的是t的指针。与之对比的是(2)子函数中T是数组,传入的是数组的首地址(改变形参也就改变了实参)。

android 数组赋值字符串_C语言奇淫技巧,字符串的三种表示方法,不会用不是合格的程序员...相关推荐

  1. 字符串反转(把一个字符串按相反的顺序输出)的三种简单方法

    第一种方式-思路:通过使用 String.toCharArray()转换成char数组,倒叙循环遍历该数组即可 public static void fz() {//思路:通过控制台输入一个字符串,/ ...

  2. 冒泡法排序函数c语言,【C语言】冒泡法排序的三种实现方法

    冒泡法的三种排序方法: 1.数组排序 #include//#includeint main() { int i; int j; int tmp; int arr[8] = { 1, 3, 5, 7, ...

  3. 50个Pandas的奇淫技巧:向量化字符串,玩转文本处理

    大家好,我是小伍哥. 数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节.因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力.这里开个专题,总结下Pandas的使用方法,方 ...

  4. 输入n个字符串字典序排序_30个Python奇淫技巧集

    今天小编熬夜整理了一份,内容是基础篇覆盖了字符串,列表,字典和基础序列容器.不要小看青铜篇,这份资料里面收集了很多奇淫技巧,很多小编也是第一次遇到,非常值得收藏. 下面我挑选几个给大家看一下,小编觉得 ...

  5. 【算法练习】80.字符串轮转——奇淫技巧

    [算法练习]80.字符串轮转--奇淫技巧 ⭐加入组队刷题,每日一题,每天进步⭐ 看完大家的操作,感觉自己太傻了 --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 点击跳 ...

  6. c语言字符数组赋值超过,C语言字符数组赋值

    C语言字符数组赋值教程 C语言字符数组赋值详解 语法 arr[index] = value; 参数 参数 描述 arr 数组名. index 需要赋值的下标索引. value 需要设置的值. 说明 给 ...

  7. JavaScript:探索神秘的旁门左道奇淫技巧

    引言: JavaScript作为一种广泛使用的编程语言,具有出色的灵活性和强大的功能.除了其常规用途外,它还隐藏着一些奇淫技巧,这些技巧可以让你在编程过程中事半功倍.本文将揭示JavaScript的一 ...

  8. JS高端奇淫技巧(持续更新)

    众所周知, JavaScript是一门很骚的语言, 写一句话有很多种表达方式, 语法怪异而风骚, 自由而散漫, 或许这就是JS成为最流行语言的原因吧. 本文收集了JS开发中常用的各种奇淫技巧, 一句话 ...

  9. 前端js奇淫技巧(一)

    很多前端只会谢谢页面,一让他们接触js,就非常害怕. 我想有的东西,你越害怕,就越要了解它,读懂它,就会发现它还有你不知道的那一面美好. 好的,直入主题,直接说说js相关的一些奇淫技巧. 一.运算相关 ...

最新文章

  1. 隐马尔科夫模型HMM(一)HMM模型
  2. [转]C/C++语言void及void指针深层探索
  3. 专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变
  4. 【django】创建项目子应用
  5. 如何在Linux中安装和使用Silver Searcher(程序员的代码搜索工具)
  6. 生物科研神器!30分钟把人家一天的工作都给干完了!
  7. 【图像隐写】基于matlab GUI DWT+DCT+SVD数字水印嵌入提取攻击(带面板)【含Matlab源码 1664期】
  8. java中对事件的监听事件,详谈Java中的事件监听机制
  9. ModelSim 入门使用教程
  10. Memtest移植到海思上面测试DDR
  11. matlab仿真模糊PID控制,模糊PID控制及其MATLAB仿真
  12. Cy3014学习记录 二--开发软件使用汇总
  13. 电子签章系统如何无代码接入第三方应用
  14. 农历24节气日期计算公式
  15. Mac安装软件时提示已损坏的解决方法
  16. 原来ChatGPT可以充当这么多角色
  17. 电压的降额 Voltage Derating
  18. #5.2探讨时空同时考虑的相关理论的软肋
  19. 长安大学计算机控制技术期末试题,长安大学汽车理论期末试卷及答案
  20. linux log file

热门文章

  1. 字节面试现场,问我如何高效设计一个LRU
  2. 读书几年收藏的编程利器网站,给大家分享出来
  3. 错误The type XXX is deprecated解决
  4. Eclipse相关问题总结
  5. Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操作
  6. 如何在队列排队之前让ThreadPoolExecutor将线程增加到最大数量
  7. linuxsed替换字符串后保存_字符串方法——replace()
  8. gpu的单位表示_GPU编程1--GPU中的基本概念
  9. 如何用 Nacos 构建服务网格生态
  10. 课时 23:Kubernetes API 编程范式(陈显鹭)