当前位置:首页 » 编程语言 » c语言中单词查找
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中单词查找

发布时间: 2022-09-20 22:25:18

c语言词语搜索

/*本程序已在tc2.0上运行成功,根据提示输入txt文件名(带扩展名)和要查的单词*/
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
char fname[10],ch,word[100],wp[20],pre;
int i,result=0;
int x,n;
printf("Input filename:");
scanf("%s",fname);
if((fp=fopen(fname,"r"))==NULL)
{
printf("can't open file!\n");
exit(0);
}
getchar();
printf("Input the word:");
scanf("%s",wp);
getchar();
x=1;
n=0;
pre=' ';
while(!feof(fp))
{
ch=getc(fp);
if(ch=='\n')
x++;
if(pre=='\n')
n=0;
if(pre==' '&&ch!=' ')
n++;
if(pre==' ')
{
i=0;
while(ch==wp[i]&&wp[i]!='\0')
{
ch=getc(fp);
i++;
}
if(wp[i]=='\0'&&ch==' ')
{
printf("%s:row=%d,number=%d\n",wp,x,n);
result=1;
break;
}
}
pre=ch;
}
if(result==0)
printf("Can't fine the word!\n");
fclose(fp);
getch();
}

㈡ c语言怎么查询一短语中的某个单词

用strstr这个函数

㈢ C语言文件中单词的查找与替换

天下武功,唯坚不破:下面是我完整的代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

unsigned char s[100]={0};

int find(char* s)
{
char word[100] = {0};
char new_word[100] = {0};
int i = 0 ;
int match_sum = 0;
char c;
char* ptr = s;

printf("input the word your want to find out:\n");
while( (c= getchar()) !='\n')
word[i++] = c;
i = 0;
printf("input your new word:\n");
while( (c= getchar()) !='\n')
new_word[i++] = c;

printf("the word your inputed is:\t%s\n",word);
printf("the new word your inputed is:\t%s\n",new_word);

while( *ptr ){
if(*ptr == *word){
char*p = ptr;
char* pp =ptr;
char* p1 = ptr;
char* p2 = word;
char* p3 = new_word;
while( (*p2) && (*p1) ){
if( *p2++ != *p1++)
break;
}
if( (!*p2) && *(--p2) == *(--p1)){
match_sum++;
int len_old = strlen(word);
int len_new = strlen(new_word);
char s_tmp[100]={0};
char* t = s_tmp;

if( len_old < len_new){
char* tt = p1 + len_old-1;
while(*t++ = *tt++);
printf("s_tmp = %s\n",s_tmp);
while( *p3){
*p++ = *p3++;
}
t = s_tmp;
while(*t)
*(ptr+len_new ++) = *t++;
}

else {
char* tt = p1 + len_new;
while(*t++ = *tt++);
printf("s_tmp = %s\n",s_tmp);

while(*p3){
*p++ = *p3++;
}
t = s_tmp;
while(*t )
*(pp+ len_new ++) = *t++;

}
}
}
ptr++;
}

printf("there is %d word matched!\n",match_sum);

printf("your new string :\n%s\n",s);
return match_sum;
}

int input(char *s)
{
printf("input your string:\n");
int i;
unsigned char c;
char *tmp = s;

for(i = 0;i<100 && (c = getchar()) !='\n';i++)
*tmp++ = c;

printf("the string your inputed is:\n%s\n",s);

return 0;
}

int main()
{

input(s);

if( find(s) == 0 )
printf("your word doesn't exist!\n"),exit(-1);

}

㈣ c语言怎么提取字符串单词

我是提取一段文字,也在网上找了好久,没找到合适的,只好自己编写了一个函数,你看看对你有没有帮助。
// 匹配字符串 m_Yuantext 是被提取的文件, m_guanjian 是索引关键字
int CMy500Dlg::Guanjian(CString m_Yuantext, CString m_guanjian)
{
// TODO: 在此处添加实现代码.
int ddr = 0;//
for (int dd = m_Yuantext.GetLength(); dd; dd--)
{
ddr = m_Yuantext.Find(m_guanjian.Mid(0), ddr);//查找第一个关键字
if (ddr != -1)//找到第一个关键字
{
int addr = m_guanjian.GetLength();
int addr2 = addr;
addr--;//去掉已经匹配的第一个关键字
for (; addr; addr--)//如果有两个或者两个以上的关键字,就依次匹配 addr 个关键字
{
if (m_Yuantext.Mid(ddr + (addr2 - addr)) != m_guanjian.Mid(addr2 - addr))//依次匹配关键字
{
break;//匹配失败跳出本次循环
}
}
return ddr;//返回第一个关键字的索引
}
else
{
break;//匹配失败跳出本次循环
}
}
return -1;//返回匹配失败
}

㈤ 求大神解答一道C语言题:用二分法在顺序排列的字典中查找单词

#include <stdio.h>
#include <string.h>
void binary_search(char key[100], char a[100][100], int n) /*自定义函数binary_search*/
{
int low, high, mid, count = 0, count1 = 0;
low = 0;
high = n - 1;
while (low < high) /*当查找范围不为0时执行循环体语句*/
{
count++; /*count记录查找次数*/
mid = (low + high) / 2; /*求出中间位置*/
if (strcmp(key,a[mid])<0) /*当key小于中间值*/
high = mid - 1; /*确定左子表范围*/
else if (strcmp(key,a[mid])>0) /*当key大于中间值*/
low = mid + 1; /*确定右子表范围*/
else if (strcmp(key,a[mid])==0) /*当key等于中间值证明查找成功*/
{
printf("success!\nsearch %d times!a[%d]=%d", count, mid, key);
/*输出查找次数及所查找元素在数组中的位置*/
count1++; /*count1记录查找成功次数*/
break;
}
}
if (count1 == 0) /*判断是否查找失败*/
printf("no found!"); /*查找失败输出no found*/
}
main()
{
char key[100],a[100][100];
int i,n;
printf("please input the length of array:\n");
scanf("%d", &n); /*输入单词个数*/
printf("please input the element:\n");
for (i = 0; i < n; i++)
scanf("%s", a[i]); /*输入有序单词到数组a中*/
printf("please input the number which do you want to search:\n");
scanf("%s", key); /*输入要查找的关键字*/
binary_search(key, a, n); /*调用自定义函数*/
}

㈥ 写一条查找单词数的C语言

#include <stdio.h>
main()
{
char c[10],d[10];
int i=0,a=0,p=1,k=0;
printf("输入一个单词,以空格结束\n");
while(i<10)
{c[i]=getchar();
i++;
if (c[i-1]==' ')
{printf("请输入文章,以0结束\n");break;}}
show:
while(a<10)
{ d[a]=getchar();
if(d[a]=='0')
break;
if (d[a]==' ')
{ i=0;
while ((i<=9)&&(c[i]==d[i]))
i++;
if(i==a+1)
{ p++;k++;a=0;
goto show;}
else
{k++;
a=0;
if(k<=1000)
goto show;}

}
a++;
}
printf("一共有%d个",p);
}

这里只给出有几个,位置就自己加一下吧,我也刚学

㈦ 用C语言写:检索英文单词程序

#include<stdio.h>
#include<string.h>
#define MAX_size 1000
int flag=1,degree=0;
void Index(char str[],char word[],int position[])
{
int i,len_str,len_word,pos_str,pos_word,k=0,word_number=0;//word_number代表短文中单词的个数
len_word=strlen(word);
len_str=strlen(str);
for(i=0;i<len_str;)
{
while(str[i]==' ')
i++;
word_number++; //单词个数加一
for(pos_str=i,pos_word=0;pos_str<len_str && pos_word<len_word;pos_str++,pos_word++)
{
if(str[pos_str]!=word[pos_word])
break;
}
if(pos_word==len_word && (str[pos_str]=='\0'|| str[pos_str]==' ' )) //表明找到相等的单词
{
position[k++]=word_number;
degree++; //相等的次数加1
flag=0;
}
else
{
while(str[pos_str]!=' ' && pos_str<len_str)
pos_str++;
}
i=pos_str;
}
}
void main()
{
char str[MAX_size],word[20];

int position[100],i;
printf("请输入一行英文短文: \n");
gets(str);
printf("请输入要检索的单词: \n");
gets(word);
Index(str,word,position);
if(flag)
printf("您输入的单词不在短文中。\n");
else
{
printf("您输入的单词在短文中,它共出现 %-d 次\n",degree);
printf("出现的位置为: \n");
for(i=0;i<degree;i++)
printf("第%-2d个单词\n",position[i]);
}
}//未考虑逗号,若要考虑则加几个判断条件即可

㈧ 查询单词 C语言如何实现

你一个一个字符的来判断.你可以设定一个变量来表示一个单词的开始和结束.flag=0时是没有单词,当flag=1时一个单词的开始.那flag=1即单词开始时扫描的是字符继续下个字符的,如果是非字符flag=0;到下个字符开始是flag=1;那一个单词的开始到结束就是一个单词了,你可以设定一个变量来记录单词的个数.

㈨ c语言编程在一个一直的字符串中查找最长的单词,

给出代码:
#include<stdio.h>

#include<string.h>

intmain()

{

chars[128];

char*p1,*p2;

intmax=0,len=0;

printf("Inputastring:");

gets(s);//此处用get更好,get会将空格也输入

p1=s;

for(inti=0;i<=strlen(s);i++)

{

if((s[i]=='')||(s[i]==''))//如果当前字符为空格或结束,则比较当前单词长度是否大于最大值,再将长度复位。

{

if(len>max)

{

max=len;

p2=p1;

}

len=0;

}

else//如果当前字符非空,如果当前长度为0,则表示新单词。

{

if(len==0)

p1=&s[i];

len++;

}

}

while(*p2&&*p2!='')

printf("%c",*p2++);

}

㈩ C语言 单词检索程序

=====================================
问题补充:二楼的是死循环运行不了啊
=====================================
实在抱歉,之前疏忽了,现在已经改好了,再试一下吧:)

=====================================
问题补充:二楼的幸苦了,仔细看了一下你的,好像有点出入,不是自己输入文章,是打开已有文章。还得麻烦你稍稍修改下。谢谢哈
=====================================
根据你的要求,又改了一版,现在已经改好了,再试一下吧:)
给:
#include<stdio.h>
#include<string.h>
#define MAX_size 1000
int flag=1,degree=0;
void Index(char str[],char word[],int position[])
{
int i,len_str,len_word,pos_str,pos_word,k=0,word_number=0;//word_number代表短文中单词的个数
len_word=strlen(word);
len_str=strlen(str);
for(i=0;i<len_str;i++)
{
while(str[i]==' '||str[i]==','||str[i]=='.')
i++;
word_number++; //单词个数加一
for(pos_str=i,pos_word=0;pos_str<len_str && pos_word<len_word;pos_str++,pos_word++)
{
if(str[pos_str]!=word[pos_word])
break;
}
if(pos_word==len_word && (str[pos_str]=='\0'|| str[pos_str]==' '||str[pos_str]==','||str[pos_str]=='.')) //表明找到相等的单词
{
position[k++]=word_number;
degree++; //相等的次数加1
flag=0;
}
else
{
while(str[pos_str]!=' '&&str[pos_str]==','&&str[pos_str]=='.'&& pos_str<len_str)
pos_str++;
}
i=pos_str;
}
}
void main()
{
char str[MAX_size],word[20],ch;
int position[100],i;

int k=0;
FILE *fp;

if((fp=fopen("a.txt","r"))!=NULL)
{
while(1)
{
ch=fgetc(fp);
if(ch==EOF) break;

str[k]=ch;
k++;
}
}

printf("请输入要检索的单词: \n");
gets(word);
Index(str,word,position);
if(flag)
printf("您输入的单词不在短文中。\n");
else
{
printf("您输入的单词在短文中,它共出现 %-d 次\n",degree);
printf("出现的位置为: \n");
for(i=0;i<degree;i++)
printf("第%-2d个单词\n",position[i]);
}
fclose(fp);
}