strcpyとstrstr
1、プログラミングstrcpy()関数を実現する機能
(1)方法一:
(2)、方法2:1行のコアコードで文字列コピーを実現する
実行結果:
2、求子列が文字列に現れる回数
コードは次のとおりです.
実行結果:
3、文字列の前後のスペースを外す
コードは次のとおりです.
実行結果:
(1)方法一:
#include
int main(void){
char str1[80] = "abcdefg";
char str2[80];
int i;
for(i = 0; str1[i]; i++){
str2[i] = str1[i];
}
str2[i] = 0;
printf("%s
", str1);
printf("%s
", str2);
return 0;
}
(2)、方法2:1行のコアコードで文字列コピーを実現する
#include
int str_copy(char *str1, char *str2);
int str_copy(char *str1, char *str2){
/*
for(; *str1; str1++, str2++){
*str2 = *str1;
}
*str2 = 0;
}
for(; *str1; ){
*str2++ = *str1++;
}
*str2 = 0;
while((*str2 = *str1) != 0){
str1++; // , 0;
str2++;
}
while((*str2++ = *str1++) != 0);
*/
if(str1 == NULL || str2 == NULL){
return -1;
}
while(*str2++ = *str1++);
return 0;
int main(void){
char str1[80] = "abcdefg";
char str2[80];
//char *str2 = NULL;
int ret = 0;
ret = str_copy(str1, str2);
if(ret != 0){
printf(" ,
");
}else{
printf("%s
", str1);
printf("%s
", str2);
}
return 0;
}
実行結果:
2、求子列が文字列に現れる回数
コードは次のとおりです.
#include
#include
void strstrCount(char *p, char *q, int *count);
void strstrCount(char *p, char *q, int *count){
int c = 0;
if(p == NULL || q == NULL){
printf(" ,
");
return;
}
while(p = strstr(p, q)){
c++;
p = p + strlen(q);
if(p == NULL){
break;
}
}
*count = c;
}
int main(void){
char *p = "abc12421abc34345abc325423abc";
char *q = "abc";
int count = 0;
strstrCount(p, q, &count);
printf("%d
", count);
return 0;
}
実行結果:
3、文字列の前後のスペースを外す
コードは次のとおりです.
#include
#include
#include
void trimSpace(char **str1, char *str2);
void trimSpace(char **str1, char *str2){
int length = strlen(str2);
char *tmp;
*str1 = (char *)malloc(sizeof(char)*length);
tmp = *str1;
for(; *str2; str2++){
if(*str2 != ' '){
*tmp++ = *str2;
}
}
*tmp = 0;
}
int main(void){
char str[] = " abcdefg ";
char *str1;
printf("%s
", str);
trimSpace(&str1, str);
printf("%s
", str1);
}
実行結果: