纯纯是刷完练习题然后自己整理记录,就当自己的笔记了!!
题目: 查找字符数组中字符串的位置(例如hellow ll 3)
遇到这个问题就第一时间想到字符串的比较
strcmp(字符串1,字符串2);
用到这个函数必需要包含头文件#include <string.h>
这个函数比较的是两个字符串的首地址,完整的函数是:
int strcmp(const char*a,const char*b);
strcmp(字符串1,字符串2)如果字符串1等于字符串2那么函数的返回值就是0,否则就是0;
明显这道题用两个字符串比较好像不太行,因为被比较和比较的字符串不一样大,如果这样比较肯定是不相等的。这个时候 需要比较字符串部分
strcmp() 对两个字符串进行大小写敏感的比较
strcmpi() 对两个字符串进行大小写不敏感的比较
stricmp() 同strcmpi()
strncmp() 对两个字符串的一部分进行大小写敏感的比较
strnicmp() 对两个字符串的一部分进行大小写不敏感的比较
这个是strcmp其他函数的用法!!!需要记住!!!
所以这个题就需要用到比较两个字符串一部分进行比较,如果想进行大小写区分也是可以的。
这个函数的用法:
int strncmp(字符串1,字符串2,要比较的个数)返回值跟strcmp一样。
SO
弄明白strncmp的用法这个题就迎刃而解:
#include <stdio.h>
#include<string.h>
int get(char s[],chare[])
{
int s_length=strlen(s);
int e_length=strlen(e);
for(int i=0;i< s_length-e_length;i++)
{
if(strncmp(s+i,e,e_length)==0)
{
return i+1;
}
}
return -1;
}
下面的main函数各位大佬就知道怎么写了把,这里就不多说了。如果有看官不知道怎么写,下面就是man函数
int main()
{
char a[32]={0};
char b[32]={0};
printf("请输入两个字符串 \n");
scanf("%s %s",a,b);
int c=get(a,b);
if(-1==0) /*这里建议所有的常量放在表达式左边,如果少写一个等号编译也是能通过的,结果就不对了。如果放在左边少写一个等号编译会提示有问题,这样能防呆*/
{
printf{"字符串不存在 \n"};
}
else
{
printf("字符串的位置是:%d",c);
}
return 0;
}
这个就是完整的代码了,各位看官有啥更好的办法可以一起讨论一下。俺是一个刚刚踏入学习嵌入式的小辣鸡。