二维字符数组赋值和字符串比较

 

一、赋值
1. 声明时初始化赋值

char str[][20]={"aaa","bbb","ccc"}; 


2. sprintf / strcpy(#include <string.h>)

char str[3][20]; 
sprintf(str[0],"aaa");  / strcpy(str[0],"aaa");
sprintf(str[1],"bbb");  / strcpy(str[1],"bbb");
sprintf(str[2],"ccc");  / strcpy(str[2],"ccc");

3. 使用数组指针

char *str[20];
str[0]="aaa";
str[1]="bbb";
str[2]="ccc";


二、比较
比较字符数组和字符串常量

字符串常量:字符串常量是存在程序的常量区,字符串常量代表的是其地址
例如:

char *p = "char";
char str1[] = "char";
char str2[10] = "char";


与"char"比较时,实际上是在比较地址是否相同
(p == "char") = 1
程序将“char”存在常量区,p和“char”都指向该位置
(str1 == "char") = 0;
(str2 == "char") = 0;
但是str1是内存在栈中开辟一个长度为5的空间存放"char",str2是在栈中开辟一个长度为10的空间存放"char"(末尾都以'\0'结尾)。

strcmp(#include <string.h>)
strcmp(char* str1, char* str2)
相等返回0
str1 < str2 返回负数
str1 > str2 返回正数
(大小对应ASCII编码)
(对具体的数值没有规定,常用编译器是-1和1,但为了跨平台兼容性,不应以此为判断)三、char,undesigned char
不管是char还是U8(undesigned char),int等,进行字符串格式化后都可以进行比较。
理解是字符对应的是ASCII,比较的是实际存储的编码,只要都能完全表示就可以。其实char的范围是0~127,ASCII编码也是0~127,而U8是0~255,更不用说int等,都远超过了char对应ASCII的范围。

undesigned char buff[100];
char c[20]="abc";

sprintf(buff, "%s", c);// 也可以用strcpy(buff, "abc");

if(strcmp(buff, c)==0)
{
    printf("比较成功\n");
}

 

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值