#include <stdio.h> int strlen(char *str)
{
int i; for ( i = 0; str != '\0'; i++ ); /* 用循环计算长度 */
return i;
} /* ---------------------------------------- */
/* 在字符串中找寻子字符串 */
/* ---------------------------------------- */
int strindex(char *str,char *substr)
{
int end,i,j; end = strlen(str) - strlen(substr); /* 计算结束位置 */
if ( end > 0 ) /* 子字符串小于字符串 */
{
for ( i = 0; i <= end; i++ )
/* 用循环比较 */
for ( j = i; str[j] == substr[j-i]; j++ )
if ( substr[j-i+1] == '\0' ) /* 子字符串字结束 */
return i + 1; /* 找到了子字符串 */
}
return -1;
} /* ---------------------------------------- */
/* 主程式: 在字符串中找寻子字符串出现位置. */
/* ---------------------------------------- */
void main()
{
char string[100]; /* 字符串定义 */
char substring[100]; /* 子字符串定义 */
int result; /* 找寻结果 */ printf("请输入字符串 ==> ");
gets(string); /* 读取字符串 */
printf("请输入要搜索的子字符串 ==> ");
gets(substring); /* 读取子字符串 */
result = strindex(string,substring); /* 搜寻子字符串 */
if ( result > 0 )
printf("子字符串 %s 位置在 %d\n",substring,result);
else
printf("没有找到子字符串 %s\n",substring);
getchar();
}
查找字符串的个数 #include <iostream>
#include <string>
int searchString(string str1, string str2)
{
int count = 0;
int start = 0;
int len1 = str1.length();
int len2 =str2.length();
string t_str;
while (start <=(len1-len2))
{
t_str = str1.substr(start,len2);
if (t_str == str2)
{
count++;
start += len2;
}
else
{
start++;
}
}
return count;
}
int main()
{
string str1 = "abcdabcdddd ";
string str2 = "abc ";
int i = searchString(str1, str2);
cout < < "there are " < <i < < " " < <str2 < < " in " < <str1 < < ". " < <endl;
return 0;
} 字符串 右移 void loopMove(char* pStr, int steps); int main(int argc, char* argv[])
{
char str[] = "abcdefg";
//char* str = "abcdefg"; //为什么不能用char*
cout<<str<<endl;
loopMove(str, 2); cout<<str<<endl;
return 0;
} void loopMove(char* pStr, int steps)
{
int n = strlen( pStr ) - steps;
char tmp[24];
memcpy( tmp, pStr + n, steps );
memcpy(pStr + steps, pStr, n );
memcpy(pStr, tmp, steps );
}
|