strcmp怎么用在字符串上?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strcmp怎么用在字符串上?相关的知识,希望对你有一定的参考价值。
参考技术A可以使用库函数strcmp判断,具体如下:
strcmp是C语言比较字符串的库函数,形式为int strcmp(char *a, char *b);
该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。
所以,要判断字符串相等,可以使用。
扩展资料:
关于上述strcmp()函数比较字符串的例子
#include <stdio.h>
#include <string.h>
int main(void)
char str_1[] = "abc";
char str_2[] = "abc";
char str_3[] = "ABC";
if (strcmp(str_1, str_2) == 0)
printf("str_1 is equal to str_2. \\n");
else
printf("str_1 is not equal to str_2. \\n");
if (strcmp(str_1, str_3) == 0)
printf("str_1 is equal to str_3.\\n");
else
printf("str_1 is not equal to str_3.\\n");
return 0;
参考资料来源:字符串-百度百科
如何在不使用 strcmp 和方括号的情况下比较字符串?
【中文标题】如何在不使用 strcmp 和方括号的情况下比较字符串?【英文标题】:How to compare string without using strcmp and square brackets? 【发布时间】:2016-02-11 01:40:55 【问题描述】:例如,我有一个结构数组,其中包含很多名称,并且我有一个指向该结构的指针。而且我有一个输入让用户输入名称以匹配结构中的名称我应该怎么做而不使用字符串并且只使用指针?
struct people
char name[20];
people list[10];
people *ptr;
ptr = list;
char lists[20];
char *inpu;
inpu = lists;
cout << "Input name";
cin >> inpu;
我试过用这个,但效果不好。
If ( inpu == (*ptr).name)
cout << "1";
else cout << "2";
【问题讨论】:
不,即使它们具有相同的文本,它们也不是相同的字符串,因此也不是相同的指针。 是的,我尝试计算输入名称和结构名称指针指向的结果,它们显示相同,但它从来没有 cout 1。我该如何纠正它?你能帮我吗 我想尝试用指针解决它的另一种方法 @Hong 所以继续 - 去做吧。制定限制并要求其他人完成有什么意义? 使用关系运算符将字符数组转换为std::string
比较。
【参考方案1】:
如果你不想使用 strcmp,请使用 here 中的完全notstrcmp:
int totallynotstrcmp(const char* s1, const char* s2)
while(*s1 && (*s1==*s2))
s1++,s2++;
return *(const unsigned char*)s1-*(const unsigned char*)s2;
【讨论】:
(unsigned char)*s1 - (unsigned char)*s2
会更短更容易阅读
迂腐:(*(const unsigned char*)s1 > *(const unsigned char*)s2) - (*(const unsigned char*)s1 < *(const unsigned char*)s2);
不会溢出。处理具有相同范围的罕见unsigned char, unsigned
。以上是关于strcmp怎么用在字符串上?的主要内容,如果未能解决你的问题,请参考以下文章