1、找查子字符串的位置和次数
使用字符串和指针实现在指定字符串中查找子字符串的位置和次数,代码如下,
#include <stdio.h>
int main()
{
void search( char *a, char *b );
char a[] = "cjavapy = www.cjavapy.com c javap py";
char b[] = "java";
search( a, b );
return(0);
}
void search( char *a, char *b )
{
int alen = strlen( a );
int blen = strlen( b );
int i, j, k, s;
int sum = 0;
for( i = 0; i < alen; i++ )
{
k = i;
s = 0;
for ( j = 0; j < blen; j++ )
{
if ( a[k++] == b[j] )
{
s++;
}else{
break; /* 退出当前循环 */
}
}
if ( s == blen ) /* 子串出现 */
{
sum++;
printf( "出现位置%d;第%d次\n", i + 1, sum );
}
if ( k == alen )
{
break;
}
}
}
2、字符串连接
使用指针将两个字符串进行连接,并且不破坏原始字符串,代码如下,
#include<stdio.h>
char *concat(char *s1,char *s2)
{
char *s,*p,*q;
int len1=0,len2=0;
p=s1;
while(*p!='\0')
{
len1++;p++;
}
p=s2;
while(*p!='\0')
{
len2++;p++;
}
s=q=(char *)malloc(sizeof(len1+len2));
p=s1;
while((*q++=*p++)!='\0');
q--;//q后退到'\0'
p=s2;
while((*q++=*p++)!='\0');
return s;
}
void main()
{
char s1[]="cjavapy";
char s2[]="=c java python";
char *s;
s = concat(s1,s2);
printf("%s\n",s);
}
3、遍历二维字符串数组
使用指针遍历二维字符串数组,代码如下,
#include <stdio.h>
char * stringFor(char** str,int size) ;
int main()
{
int i,len;
char * temp ;
char * a[]={"cjavapy","c/c++/c#","javapy","python"}; //1
char ** s = a; //2
printf("%d\n",sizeof(a)/sizeof(a[0]));//4块区域
printf("a[0]=%s\n",a[0]);
printf("*(s+1)=%s\n",*(s+1));
printf("第二行第二个元素*(*(s+1)+2)=%c\n",*(*(s+1)+2));
len =sizeof(a)/sizeof(a[0]);
for( i=0;i<strlen(a[0]);i++)
{
printf("%c\n",*(*(s+0)+i));
//printf("%c\n",s[0][i]);
}
temp = stringFor(s,len);
}
char * stringFor(char** str,int size) {
int i;
printf("函数中遍历\n");
for(i=0;i<size;i++)
{
printf("%s\n",str[i]);
}
}
4、二维数组的查找
输入一个整数,在一个二维数组中,判断数组中是否含有该整数。代码如下,
#include <stdio.h>
int add(int arr[][3], int x, int y, int n)//函数的形参为:数组,行数,列数,还有n。
{
int i = 0;//把i赋值为0数组的第一行
int j = y - 1;//把列数赋值给j这里要-1,不-1会越界访问。
while (i<=x && j>=0)
{
if (arr[i][j] < n)//先从第一行的最后一个值来进行比较。如果小于目标值,行数加1.
{
i++;
}
else if (arr[i][j] > n)//如果大于要找的目标值,列数-1。
{
j--;
}
else//相等返回0.
{
return 1;
}
}
return 0;//没找到返回0.
}
int main()
{
int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };//创建一个有序的二维数组
int n = 0;//创建一个变量n
printf("请输入一个需要查找的整数:\n");
scanf("%d", &n);//输入n,代表你想要找的那个数。
printf("%d在arr[3][3]中", n);
if (add(arr, 3, 3, n))
{
printf("存在\n");
}
else
{
printf("不存在\n");
}
return 0;
}