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; }