栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

字符串的应用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串的应用

C语言存储字符串的方式

:
将字符串中每个字符的ASCLL码按先后顺序存储在一段连续的内存中,每个字符占一个字节,最后用空字符,即ASCLL码为0的字符结尾.
表示字符串的方式:

  • 字符指针方式
  • char *pstr = “hello”;//pstr保存字符串的首地址
  • 不能通过pstr修改指向的字符串,例如:pstr[1]=‘E’
  • 字符数组方式
  • str[]={‘a’,‘b’,‘c’,‘’};//“abc”
  • str[]= “abc”;
  • 数组名即字符串首地址
  • 可以用字面值初始化.也可以用{}初始化
  • 用{}初始化需要手动显示注明结束符,否则就是一个数组
  • 可以任意修改
#include 
int main(void) {
    printf("%sn","abcd");//%s:用于打印或者输入字符串
    printf("%sn","abcd");//书写上可以省略'/0',但是实际内存必须有
    printf("%sn","1234abc");//1234
    printf("hello"" worldn");//等价于Printf("hello worldn");
//指针和字符串的那点事
char *p = "abc";//定义p指针指向字符串"abc"的首地址,abc所在的内存只能读不能改
int a = 1;
int b[20] = {1,2,3,4,5,6,7};
int *p2 = b;
printf("%dn",*p2);
int *p1 = &a;//指向a的地址
printf("%sn",p);//地址即本身,而*本身即是首字符的元素(字符串的定义)
printf("%cn",*(p+1));//这是是把字符串的第一个元素按照字符的形式输出.
printf("%dn",*p);//这里是把字符串的首元素按照十进制输出即内存值.
printf("%dn",*p1);//这里指向了100地址的上级,即常量值
printf("%pn",p1);//这里指向100的地址(地址→常量)
printf("%hhd %hhd %hhd %hhd",p[0],p[1],p[2],p[3]);//%hhd是用ascii码输出
    return 0;
}

结果:
abcd
abcd
1234
hello world
0x7ffe25e52a90
abc
b
97
1
0x7ffe25e52aec
97 98 99 0

注意:给一个函数传递字符串,本质是给这个函数传递了字符串的首地址

2.数组字符串
注意:如果最后一个元素是,str不仅仅是一个数组还是一个字符串,否则str就是一个数组,不是字符串.

char str1[] = {'m','x','s','s','m',''};//如果最后一个元素是,str不仅仅是一个数组还是一个字符串,否则str就是一个数组,不是字符串
printf("%sn",str1);
char str2[] = {"mengxiaokun"};
printf("%sn",str2);
    return 0;
2.字符串的输入和输出

1.字符串的输入

  • scanf(“%s”,…)
  • char* gets(char*s);
  • 从标准输入读取一行字符串,读走换行符即返回,并将所读到的换行符置换为结尾空字符

2.字符串的输出

  • printf(“%s”,…);
  • int Puts(const char* s);
  • 向标准输出写入一行字符串,并追加一个换行符.

如果用scanf输入字符串,则遇到空格自动结束,代码如下:

#include 
int main(void) {
char str[100] = {0};//分配内存来存储输入的字符串
scanf("%s",str);//从键盘上输入字符串保存到数组str中,遇到空格立刻结束.
printf("%s",str);
return 0;
}

开始运行...
1234 123wa
1234
运行结束。

如果用gets输入字符串,puts输出字符串,则因为gets没有检验字符串长度的功能,所以一旦超过字符串数组的长度就会报错;代码如下:

#include 
int main(void) {
    char str[100] = {0};
    gets(str);
    puts(str);
return 0;
}
开始运行...
1234 123wa
1234 123wa
运行结束。

还有一些标准c库函数
注意:该标准C库函数需要加头文件#intclude

1.strlen:获取字符串中有效字符的个数.(不包含)

#include 
#include
int main(void) {
    char *p1 = "abcdefg";
    printf("%lu,%lun",strlen("abc"),strlen(p1));//%lu输出的是长整型
return 0;
}

结果:
3,7

运行结束。

2.strcat:将一个字符串拼接到另一个字符串的后面

#include 
#include
int main(void) {
    char *p1 = "abcdefg";
    char str[]= "abcde";
    char *p = str;
    strcat(p,"xzy");//将字符串xzy并接到字符串abcde的后面
    printf("%sn",str);
return 0;
}

3.strcpu:字符串拷贝,将指定的字符串拷贝到指定的内存空间

#include 
#include
int main(void) {
    char str2[20] = "abcd";
    strcpy(str2,"123456");
    printf("%sn",str2);
    char *p = "abcd";
    strcpy(str2,p);//将p指向字符串abcd拷贝到str2中
    printf("%s",str2);
return 0;
}

4.strcmp:字符串,从左边到右边一个字符比较,直到不相等或者字符结束不再比较

#include 
#include
int main(void) {
    int ret = 0;
    ret = strcmp("abc","abc");
    printf("%dn",ret);
    ret = strcmp("abd","abcd");//后者大于前者返回大于0的值
    printf("%dn",ret);
    ret = strcmp("abc","abd");//猴子小于前者则返回小于0的值.
    printf("%dn",ret);
return 0;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879284.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号