main.cpp 逻辑
myString.h 封装字符串的相关操作
myString.cpp 函数的具体实现
1.定义两个数组保存字符串
2.定义接收用户输入字符串的函数
字符串常量:“请输入语句”
main函数
#include <stdio.h>
#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 <stdio.h>
#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;
}