12.4demo查找字符串

main.cpp 逻辑
myString.h 封装字符串的相关操作
myString.cpp 函数的具体实现
1.定义两个数组保存字符串
2.定义接收用户输入字符串的函数
字符串常量:“请输入语句”

main函数

#include 
#include "myString.h"

//%s 遇到空格或者\n
//scanf不能输入带空格的字符串
//只能自己定义一个输入语句的方法
void myScanf(char *p){
    int i = 0;
    while (1) {
        char c = getchar();
        if (c == '\n') {
            p[i] = '\0';
            break;
        }
        p[i] = c;
        i++;
    }
}

void input(char *p, char *des){
    //提示用户操作
    printf("%s:", des);
    //输入语句
    myScanf(p);
}

//计算字符串的长度
int length(char *p){
    int i = 0;
    //for (; p[i] != '\0'; i++);
    while (1) {
        if (p[i] == '\0') {
            break;
        }
        i++;
    }
    return i;
}

int find(char *sentence, char *word){
    //1.获取两个字符串的长度
    int sLength = length(sentence);
    int wLength = length(word);
    //2.判断查询的字符串长度是否比句子短
    if (sLength < wLength) {
        return 0;
    }
    /*
     hjako jack ,jac;
     i = 2
     jac
     j = 2
     */
    int start = 0;
    int count = 0;
    for (int i = 0; i < sLength; i++) {
        //记录当前开始的位置
        start = i;
        
        //从当前位置开始去和查找的单词进行比较
        int j = 0;
        for(; j < wLength; j++){
            //判断j对应的值和start+j比较
            if (sentence[start+j] != word[j]) {
                break;
            }
        }
        
        //判断怎么出来的
        if (j == wLength){
            //都相同
            //将i的值定位到start+j的位置
            i = start + j-1;
            
            count++;
        }
    }
    
    return count;
}

myString.cpp

//计算字符串的长度

int length(char *p){
    int i = 0;
    for(; p[i] != '\0'; i++);
    return i;
}

int find(char *sentence, char *word){
    //1.获取两个字符串的长度
    int sLength = length(sentence);
    int wLength = length(word);
    
    printf("%d %d\n", sLength, wLength);
    return 0;
}

##myString.h
#include 
#include "myString.h"

/*
 * fafjalfjasdfjsadlf
 * kfjakfj
 * fslf
 * ksdfjlafjalsf
 */
int main(int argc, const char * argv[]) {
    char sentence[100] = {};
    char word[20] = {};
    
    input(sentence, "请输入语句");
    input(word, "请输入查找的单词");
    
    int count = find(sentence, word);
    printf("出现%d次\n", count);
    return 0;
}

你可能感兴趣的:(12.4demo查找字符串)