一、gets()函数

gets()函数在其函数声明中声明括号中的类型为char *。但当我尝试下列操作时却给出了警告:p没有使用。

#include<stdio.h>
int main()
{char *p;gets(p);printf("%s",p);return 0;
}

后来得知,char*只负责指向某一段字符串。程序中出现的没有赋给某个变量的双引号内的字符串,是属于静态存储类。把指针初始化到指向这个静态存储的字符串,只是引用了这个字符串。而初始化字符数组为这个字符串,是说把这个字符串复制到了一个分配好的变量存储空间,之后再修改的,就是数组里的字符。

所以如果想通过char *初始化字符串,要么指向一段字符串,否则只能用p = (char *)malloc(NUM*sizeof(char)); 申请空间来进行初始化。

gets() 函数遇到换行符丢弃换行符,储存其他字符并在末尾添加空字符('\0')。与其对应的puts() 函数在结尾会多输出一个换行符。不过gets() 函数并不会检测录入的字符串是否越界,所以存在风险。C11标准新加入的gets_s()函数会抛弃多余的字符串,可以有效避免这个问题,但可能会导致中止或退出程序。

二、strlen() 函数

该函数可以测出某一字符串的长度(从1计数),遇到空格不会终止会继续向下计数。该函数包括在string.h中。

三、strcat() 函数

该函数括号中有两个参数,作用是把第二个字符串的备份附加在第一个字符串末尾并返回char*指针(拼接第二个字符串后的

第一个字符串的地址)。不过同样该函数存在越界问题,还好有strncat() 函数可以完美解决这个问题。strncat() 会加入第

三个参数(数字)来规定最大添加字符数

四、strcmp() 函数

该函数是把第二个字符串与第一个字符串进行比较。如果相通则返回0,如果第一个字符串的字典序位于第二个字符串之前,

则返回一个一个复数,否则返回一个正数。在ACS II中,大写字母位于小写字母之前。

不过应当注意,该函数是比较的是字符串,而不是单个字符!一定是“ ” ,而不是‘ ’。

五、strcpy() 函数

该函数是把第二个字符串复制给第一个字符串,并返回char*,即第一个字符串的地址。不过应当注意在gets() 中同样遇到

的问题,第一个字符串必须经过初始化才可以复制。例如下面代码就有问题:

char *str;strcpy(str,"hahaha");     //有问题

很明显该指针没有经过初始化。strcpy可以接受两个字符串指针或数组作为参数,但第一个指针必须指向一个数据对象。不过第一个参数不必指向字符串的开始,这个属性可以拷贝数组的一部分。

同样为了防止越界,C还提供了strncpy() 函数,第三个参数(数字)指明可以拷贝的最大字符数。利用这一特性还可以筛选出带有一小段固定字符串的字符串来。在strcpy(target,cource,n) 中,如果拷贝到n个字符还没有拷贝完源字符串,就不会

拷贝空字符。所以应当把n设为第一个数组大小-1,并把数组最后一个元素设置为空字符:

#define TARGET 7
strcpy(qwords[i],temp,TARGET-1);
qwords[i][TARGET-1]='\0';

六、 sprintf() 函数(stdio.h中)

该函数是把多个元素整合到一个字符串中,可以是数字也可以是字符串。例如:(last:Jack,first:Mick,prize:¥2500)

sprintf(formal,"&s,%s:%f",last,first,prize);

结果为 Jack ,Mick:¥2500

C语言中的字符串与字符串函数相关推荐

  1. C语言字符串判断是否与已知相同,C语言中判断两个字符串是否相同的方法

    C语言中判断两个字符串是否相同的方法 C语言提供了几个标准库函数,可以比较两个字符串是否相同.以下是用strcmp()函数比较字符串的一个例子: #include #include void main ...

  2. C语言中存储多个字符串的两种方式

    C语言中存储多个字符串的两种方式 方式一 二维字符串数组 声明: char name[4][10] = { "Justinian", "Momo", " ...

  3. c语言常用数学函数大全查询,C语言数学函数 C语言中全部可用的数学函数有哪些?...

    导航:网站首页 > C语言数学函数 C语言中全部可用的数学函数有哪些? C语言数学函数 C语言中全部可用的数学函数有哪些? 相关问题: 匿名网友: /*--------------------- ...

  4. c语言中存储字符用什么函数,那些C语言中你不知道的字符串函数(坑)

    1.strcpy() 在字符串拷贝函数中,它的函数编写不难,如下 char* Strcpy(char* dest, const char* src) { assert(dest != NULL &am ...

  5. 谈谈你对c语言中数据(各种常量,变量,函数参数,字符串)的存储认识,自考《高级语言程序设计》知识点总结(二)...

    2.1 C语言的数据类型 数据类型包含两方面的内容:数据的表示和对数据加工的操作.数据的全部可能表示构成数据类型的值的集合.数据全部合理的操作构成数据类型的操作集合. 在C语言中,把整型.实型和字符型 ...

  6. c语言 指针到字符串,C语言中的指针和字符串

    前言 务必理解指针与内存模型,不要死记硬背. 内存里的字符串 C语言中的字符串一般是char *类型的,这是怎样存在内存中的呢? cchar *s = "NIHAO"; | s:4 ...

  7. Go语言中的字符和字符串

    Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称. 下面用一个简单的程序来演示字符类型: package mainimport ("fmt&q ...

  8. 【C语言】c语言中的数组和字符串

    如果需要处理1名学生的10门课程的成绩,用什么来存储这些数据?第一种方法:可以定义10个变量,每个变量中存放1门成绩.但这种方法定义的变量过多,若课程数目更多,处理起来势必更加繁琐.第二种方法:设想用 ...

  9. python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...

    python中的字符串 字符串基本特点 字符串的本质是字符序列.python中的字符串是不可变的,无法对原字符串做任何修改(不能用下标赋值的方式去改变字符串).但是可以将字符串的一部分赋值创建新的字符 ...

  10. C语言中的字符与字符串库函数的使用以及模拟实现

    目录 一.求字符串长度 1.strlen库函数如何使用? 2.如何模拟实现strlen函数 二.长度不受限制的字符串函数 1.库函数 strcpy 如何使用? 2.如何模拟实现 strcpy 函数? ...

最新文章

  1. 推理芯片的性能建立在优化的存储子系统设计上
  2. ribbon超时时长配置参数查询
  3. SAP S/4HANA product search generated SQL statement的生产原理介绍
  4. HBase-1.2.4LruBlockCache实现分析(一)
  5. 福布斯发布2019最值得关注IoT公司榜单,全球化AI+IoT平台涂鸦智能上榜
  6. 'display','position'和'float'相互关系
  7. 【Go学习笔记2】go语言中的基本数据类型和包的介绍(一)
  8. python rest api 框架_Python Eve REST API框架
  9. win32开发(定时器)
  10. Bloom Filter布隆过滤器
  11. mongodb常用命令脚本化-自动化运维
  12. pano2vr保存的html打不开,pano2VR输出文件打不开
  13. 拉格朗日对偶性(Lagrange duality)
  14. Latex——数学符号大全
  15. MYSQL优化自学笔记
  16. 爬虫数据云词图片怎么做?小姐姐教你用python做B站弹幕爬虫,并进行数据分析生成词云
  17. 《基础微积分教材中译版》--序言
  18. ElasticSearch【从入门到服务器部署项目案例】详细教程
  19. ref和reactive的区别
  20. 读李开复——《做最好的自己》有感

热门文章

  1. [转]全图形PPT设计指南
  2. django通用视图(CBV)
  3. 例5.8求Fibonacci(斐波那契)数列的前40个数。
  4. mysql不包含模糊查询
  5. c++:dll缺少依赖文件的解决方法
  6. C++ 四种cast 详解
  7. 知明:技术 Leader 的思考法
  8. 当我们在谈论色温调节的时候,我们在谈论什么
  9. t3服务器补丁文件夹在哪,FM2017全补丁存放路径汇总 补丁放在哪个文件夹-游侠网...
  10. iperf 服务端发送数据_Iperf详细使用说明