有个程序希望大家帮看看,提提意见,谢谢
先输入一串单词,比如英语文章,再查找里面有没有这个单词,以下是代码,刚刚写完,新手,拍砖轻点哦。
希望大家可以给点建议,比如说麻不麻烦,可读性怎么样,算法,或者有什么改进了更好之类的
有时间就请帮看看代码,没时间就帮看看大体就可以了,不管怎么样谢谢了,会尽快结贴的,
#include<stdio.h>#include<string.h>#include<stdlib.h>#define M 30#define N 10void handle(char a[],char b[]){ int i=0; //a[]的下标变量 int k=0; //b[]的下标变量 int h=0; //记录循环变量 int j,m; //字节数 j=strlen(b); m=strlen(a);//需要查找的单词比输入的单词还短,肯定没有 if(j>m) {printf("无该单词!"); exit(0); };con://输入的字符串已经到尾,肯定没有 if(i>m) { printf("无该单词!\n"); exit(0); };//若输入的字符串没有到尾 if(a[i]==b[k]) { h++; //记录次数 k++; if(h==j&&(a[i+1]==' ')||a[i+1]=='\0') {printf("有该单词!\n"); exit(0); }; i++;//防止出现字符串abcd fg要查找ab,实际上是没有这个单词,但是显示有 if(a[i+1]!=' '&&h==j) k=0; goto con; } else { i++; h=0; k=0; goto con; printf("无该单词!\n"); }}void main(){ char a[M]; char b[N]; printf("输入一个字符串:"); gets(a); printf("需要查找的字符:"); gets(b); handle(a,b);} else { i++; h=0; k=0; goto con; printf("无该单词!\n"); }
[解决办法]
你要实现的功能标准库函数里有
char *strstr(char *str1, char *str2);
[解决办法]
我推荐先把原来的文本分解为一个一个的单词 如果单词的大小与目标单词相同 再进行比较
[解决办法]
if(h==j&&(a[i+1]==' ')||a[i+1]=='\0')
这个地方建议你最好按照你想要比较的先后顺序把括号加上
另外,最好你的handle函数有一个返回值,然后在main函数中根据返回值来判断是否有这个单词。
编程尽量规范一点,以后弯路走得少一些。