strcpyとstrstr

2664 ワード

1、プログラミングstrcpy()関数を実現する機能
(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); }

実行結果: