字符串
来源:互联网 发布:安卓软件编程入门教程 编辑:程序博客网 时间:2024/06/05 02:21
C语言中字符串:以0(整数0)结尾的一串字符。
0或者’\0’是一样的,但是和’0’不同。
0标志字符串的结束,但它不是字符串的一部分。计算字符串长度时不包含这个0,字符串以数组的形式存在,以数组或指针的形式访问。
处理字符串的函数#include<string.h>
char ch[5]={‘h’,’e’,’l’,’l’,’o’};
一、将数字字符串转换成整数。
输入一个以回车符结束的字符串(至少10个字符),由数字字符组成,将该字符串转换成整数后输出。
#include<stdio.h>int main(){ int i,n; char a[10]; printf("input a string\n"); i=0; while((a[i]=getchar())!='\n') { i++; } a[i]='\0'; n=0; for(i=0;a[i]!='\0';i++) { if(a[i]<='9'&&a[i]>='0') { n=n*10+(a[i]-'0'); } else //遇见非数字结束转换 break; } printf("num=%d\n",n);}
字符串变量:
char *str=”hello”;//指针指向了字符数组。
char word[]=”hello”;
char love[10]=”hello”;//在love中占据6个空间,因为有结束的标志0。
字符串以数组的形式存在
不能用运算符对字符串进行运算。
通过数组可以遍历字符串。
如果构造一个字符串:用数组。如果处理一个字符串:用指针。
字符串常量
用双引号括起来的东西。例如:“hello”
hello会被编译器变成一个字符数组,放在某处,这个数组长度是6。结尾还有一个0.
两个相邻的字符串会被自动连接起来。
char*是否为字符串
字符串可以表达为char*的形式,但是char *不一定是字符串。
char*的意思是说:这有一个指针,这个指针指向一个字节或者一串连续的字节,但它并不一定是字符串。本意是:指向字符的指针,可能指向的是字符的数组。
字符串的输入和输出。
char string[8];scanf("%s",string);printf("%s",string);scanf读入一个单词,(到空格,tab或者回车为止)。
上面的输入输出是有问题的。scanf是不安全的,因为不知道要输入的内容的长度。
应该修改为:
char string[8];scanf("%7s",string);//目的是告诉scanf最多只能读入7个字符,超过7个就不要了。printf("%7s",string);
空字符串
char a[10]="";这个数组的长度只有1.这是一个空的字符串,a[0]=='\0'
字符串数组
char **a;//a是个指针,指向另一个指针,那个指针指向一个字符(串)。char a[][];//a是一个二维数组。char a[][10]={"hello"};/*a[0]相当于char[10]*/
使用%c输入输出字符数组中的字符
#include<stdio.h>int main(){ int i; char a[3]; printf("input a string\n"); scanf("%c%c%c",&a[0],&a[1],&a[2]); printf("结果为\n"); for(i=0;i<3;i++) { printf("%c",a[i]); } printf("\n");}
用getchar和putchar函数输入输出。
#include<stdio.h>int main(){ int i; char a[3]; printf("input a string\n"); for(i=0;i<3;i++) { a[i]=getchar(); } printf("结果为\n"); for(i=0;i<3;i++) { putchar(a[i]); } printf("\n");}
运行结果相同。
用scanf函数和getchar函数给字符数组逐个输入字符的共同特点是:
1、系统不会自动加‘\0’,如果需要字符数组按照字符串存储 ,需要给输入字符后面的元素赋值‘\0’。
2、空白字符(空格、‘\0’、‘\t’)也作为字符输入
3、用printf函数和putchar函数输出字符数组的字符共同特点是:
遇到’\0’不结束,不换行(中间的’\0’变成空格)。
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- C#基础-006if条件语句
- Numpy_tile函数(kNN算法)
- WAIT 和sleep的区别
- Android 一步一步实现命令行接入Tinker 热更新
- 动态规划-最长非降子序列
- 字符串
- 剑指offer-中序遍历的下一个结点
- css样式表、css选择器
- 修改Tomcat8 内存
- libuv源码分析(windows版)
- mysql性能分析
- Android studio关于真机调试DDMS中的data文件夹打不开的解决方法
- CodeForces
- python实现-计算字符个数