下面介绍c语言中指针与数组的面试题
再看下列题之前首先要知识储备
下面用c语言介绍常用字符串函数和进行编译
一.
介绍strlen函数
unsigned int strlen(char* s)或size_t strlen(const char* string);,其中size_t实际上是unsigned int。
功能:计算给定字符串的长度,
(!!!不包括'\0'在内)
#include<iostream>
using namespace std;
unsigned int my_strlen(char* s);
int main()
{
char s[20] = { "dsjhskdj"};
cout << my_strlen(s);
}
unsigned int my_strlen(char* s)
{
unsigned int count=0;
while (*s)
{
count++;
s++;
}
return count;
}
二.介绍strcat函数
char *strcat(char *dest, const char *src);
把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\0”)。
注意:
1)要保证*dest足够长,以容纳被复制进来的*src。
2)*src中原有的字符不变。返回指向dest的指针。(src和dest所指内存区域不可以重叠:不能这样用strcat(dest,dest);
#include<iostream>
using namespace std;
char* my_strcat(char* s1, const char* s2);
int main()
{
char s1[20] = { "jsdjhf" };
char s2[10] = { "djshj" };
cout<<my_strcat(s1, s2);
}
char* my_strcat(char* s1, const char* s2)
{
char* s3 = s1;
while (*s1)
{
s1++;
}
while(*s2)
{
*s1 = *s2;
s2++;
s1++;
}
*s1 =*s2 ;
return s3;
}
三.介绍strcpy函数
原型声明:char* strcpy(char* dest, const char* src);
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
注意:
1.src和dest所指内存区域不可以重叠 dest必须有足够的空间来容纳src的字符串。
2.返回指向dest的指针。
#include<iostream>
using namespace std;
char* my_strcpy(char* dest, const char* src);
int main()
{
char s1[20] = { "sakjs" };
char s2[20] = { "sdjh" };
my_strcpy(s1, s2);
cout <<s1;
}
char* my_strcpy(char* dest, const char* src)
{
while((*dest=*src)!=0)
{
src++;
dest++;
}
return dest;
}
四.介绍strcmp。
strcmp函数是string compare的缩写,
用于比较两个字符串并根据比较结果返回整数。
int strcmp(char*str1,char *str2),
若str1 = str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
#include<iostream>
using namespace std;
int my_strcmp(char* str1, char* str2);
int main()
{
char s1[20] = { "dgfskuj" };
char s2[20] = { "dgfskuj" };
int ret = my_strcmp(s1, s2);
if (ret > 0)
cout << "s1大于s2";
else
{
if (ret < 0)
cout << "s1小于s2";
else
cout << "s1等于s2";
}
return 0;
}
int my_strcmp(char* str1, char* str2)
{
while(*str1==*str2&&*str1&&str2)
{
str1++;
str2++;
}
return *str1 - *str2;
}
五.介绍strstr函数
char* strstr(char* str1,char* str2) 函数用于判断字符串str2是否是str1的子串。
如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;
否则,返回NULL。
功能:strstr返回一个指针,指向string2在string1中首次出现的位置。
返回类型:字符串类型
传入参数:参数一、参数二都是字符串类型
!!!寻找某字符串在另一字符串中第一次出现的位置,并返回查找到字符串的位置之后的全部字符串。
注意:
(1)参数一是字符串类型的参数,要传入的是被查找的字符串。
(2)参数二是字符串类型的参数,传入的是要查找的字符串。
(3)strstr函数会寻找参数二在参数中出现的位置,
并返回查找到字符串的位置之后的全部字符串。
当没有查找到符合的字符串时,返回NULL
(4) strstr函数在查找时,大小写会被认为是不同的字符串。
#include<iostream>
using namespace std;
char* my_strstr(char* str1, char* str2);
int main()
{
char s1[20] = { "abbbdsxd" };
char s2[20] = { "bbd" };
cout<<my_strstr(s1, s2);
}
char* my_strstr(char* str1, char* str2)
{
char* t1;
char*t2;
for (t1=str1,t2=str2; *str1 != '\0'; t1++,str1=t1,str2=t2)
{
while (*str1 == *str2)
{
str1++;
str2++;
if (*str2 == '\0')
return t1;
}
}
return NULL;
}
六.介绍strncpy,strncat,strncmp。
strncpy:strncpy函数用于将指定长度的字符串复制到字符数组中,是 C语言的库函数之一。
语法形式为:char *strncpy(char *dest, const char *src, int n),表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。
通俗讲就是strncpy(s1,''JGl'',2):就是把"JG"复制到s1中。
其余两个函数类比。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)