
// 这里提供一个在字符串中查找字串的函数findstr(),并由运行截图,供参考。
#include <stdioh>
int findstr(char s,char d) {
char p = s,q;
int i;
while(p) {
i = p - s;
q = d;
while(p == q) { p++; q++; }
if(q == '\0') return i;
p = s + (++i);
}
return -1;
}
int main() {
char s = "精品办公水杯";
char d = "杯";
int result = findstr(s,d);
if(result >= 0) printf("%s在%s中的索引位置是:%d。\n\n",d,s,result);
else printf("没找到。\n\n");
return 0;
}
你的代码有问题,我刚才给你改了一下,现在运行正常了,代码如下
har a[3][20];
int i,j,num;
num=0;
for(i=0;i<=2;i++)
{
gets(a[i]);
}
for(i=0;i<=2;i++)
{
for(j=0;a[i][j]!='\0';j++)
{
if ((a[i][j]>='a'&& a[i][j]<= 'z')||(a[i][j]>='A'&& a[i][j]<= 'Z')) {
num++;
}
}
}
printf("%d",num);
#include<stdioh>
#include<stringh>
#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]);
}
}//未考虑逗号,若要考虑则加几个判断条件即可
行长不超过 254 应无问题。
fgets 获得的字符串含结尾处的 '\n',
用 temp[tempLength]='\0'; 可以去掉。
strncpy(tempCopy,temp,tempLength); 第一个参数 你少写了一个p
用 strcpy(tempCopy,temp); 也可以。
================================
根据猜测,写了个全程序:
#include <stdioh>
#include <stdlibh>
main()
{
FILE fp;
char temp[256];
char name[256],country[256];
fp=fopen("abctxt","r");
while(fgets(temp,256,fp) != NULL){
int tempLength = strlen(temp);
char tempCopy = (char) calloc(tempLength+1,sizeof(char));
temp[tempLength]='\0';
strcpy(tempCopy,temp);
sscanf(tempCopy,"%s %s",name,country);
printf("%s\n", name);
printf("%s\n", country);
}
fclose(fp);
return 0;
}
#include <stdioh>
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);
}
这里只给出有几个,位置就自己加一下吧,我也刚学
你一个一个字符的来判断你可以设定一个变量来表示一个单词的开始和结束flag=0时是没有单词,当flag=1时一个单词的开始那flag=1即单词开始时扫描的是字符继续下个字符的,如果是非字符flag=0;到下个字符开始是flag=1;那一个单词的开始到结束就是一个单词了,你可以设定一个变量来记录单词的个数
#include <stdioh>
#include <stringh>
FILE stream;
void QuickSort(char str[],int s,int t)
{
int i=s,j=t;
char tmp;
if(i<j)
{
tmp = str[i];
do
{
while(i<j && strcmp(str[j],tmp))
j--;
if(i<j)
{str[j] = str[i];
i++;}
while(i<j && strcmp(tmp,str[i]))
i++;
if(i<j)
{str[i] = str[j];
j--;}
}while(i<j);
str[i] = tmp;
QuickSort(str,s,j-1);
QuickSort(str,j+1,t);
}
}
int main(int argc,char argv)
{
char str[15];
int size;
stream = fopen("datatxt","r");
if(stream == NULL)
sprintf("Can't Open File \n");
else
{
while(fscanf(stream,"%s",str) != EOF)
{str++;
size++;}
fclose(stream);
}
QuickSort(str,1,size);
}
以上就是关于c语言如何实现在给定文档中查找想要的单词或句子,就好像word中一样,50分求解!全部的内容,包括:c语言如何实现在给定文档中查找想要的单词或句子,就好像word中一样,50分求解!、一个C语言计算单词的程序、用C语言写:检索英文单词程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)