c语言简单问题,输入一行英文,提取其中的单词。总是有个错误找不到,麻烦高手
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言简单问题,输入一行英文,提取其中的单词。总是有个错误找不到,麻烦高手相关的知识,希望对你有一定的参考价值。
#include "stdio.h" //输入一行英文,提取其中所有的单词。
#include "string.h"
int isKeyWord(char c)
if(c>='a'&&c<='z'||c>='A'&&c<='Z'||'_')
return 1;
else
return 0;
void main()
char s1[256];
char allword[16][16];
char word[16]; //?
int i,k,a=0,flag;
printf("please input data:\n");
gets(s1);
k=0;
flag=0;
//puts(s1);
for(i=0;s1[i]!='\0';i++)
if(isKeyWord(s1[i]))
word[k++]=s1[i];
flag=1;
else if(flag==1)
word[k]='\0';
flag=0;
strcpy(allword[a++],word);
k=0;
for(i=0;i<a;i++)
printf("%s",allword[i]);
#include "stdio.h" //输入一行英文,提取其中所有的单词。
#include "string.h"
int isKeyWord(char c)//这样不一定计算完所有的条件,即可正确返回,而且容易分析,还好看
if((c-'A')<0 )return 0;
if((c-'A')<26)return 1;
if((c-'a')<0 )return 0;
if((c-'a')<26)return 1;
return 0;
void main()
char s1[256];
char allword[16][16]='\0';
char word[16];
int i,j,a=0,m=0,n=0,flag;
printf("please input data:\n");
gets(s1);
flag=0;
for(i=0;s1[i]!='\0';i++)
if(isKeyWord(s1[i]))
allword[m][n]=s1[i];
n++;
flag=0;
else
if(flag==0)//遇到第一个空格
m++;//下一个字符串
flag=1;
n=0;
//后面的空格倍跳过
printf("\n 字符串个数:%3d\n",m+1);
for (i=0;i<=m;i++)
printf("%s\n",&allword[i][0]);
参考技术B 看带注释的地方
#include "stdio.h" //输入一行英文,提取其中所有的单词。
#include "string.h"
int isKeyWord(char c)
if(c>='a'&&c<='z'||c>='A'&&c<='Z'|| c=='_')/////这行改一下,判断为下划线的地方
return 1;
else
return 0;
void main()
char s1[256];
char allword[16][16];
char word[16]; //?
int i,k,a=0,flag;
printf("please input data:\n");
gets(s1);
k=0;
flag=0;
//puts(s1);
for(i=0;s1[i]!='\0';i++)
if(isKeyWord(s1[i]))
word[k++]=s1[i];
flag=1;
else if(flag==1)
word[k]='\0';
flag=0;
strcpy(allword[a++],word);
k=0;
if(flag==1)//////////////这个我新加的,有一种情况你没考虑到
//如果刚好到字符串结束了,循环退出,但是这个字符串你没有保存到allwords
word[k]='\0';
strcpy(allword[a++],word);
for(i=0;i<a;i++)
printf("%s\n",allword[i]);///加个回车好看
本回答被提问者采纳 参考技术C #include "stdio.h" //输入一行英文,提取其中所有的单词。
#include "string.h"
int isKeyWord(char c)
if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c=='_')/*****/
return 1;
else
return 0;
void main()
char s1[256];
char allword[16][16];
char word[16]; //?
int i=0,k=0,a=0,flag;
printf("please input data:\n");
gets(s1);
k=0;
flag=0;
//puts(s1);
for(i=0;;i++)
if(isKeyWord(s1[i]))
word[k++]=s1[i];
flag=1;
else if(flag==1)
word[k]='\0';
flag=0;
strcpy(allword[a++],word);
k=0;
if(s1[i]=='\0')break;
for(i=0;i<a;i++)
printf("%s\n",allword[i]);
参考技术D if(c>='a'&&c<='z'||c>='A'&&c<='Z'||'_')错了,返回始终是正确的
改成:if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c=='_') 第5个回答 2011-10-29 if(c>='a'&&c<='z'||c>='A'&&c<='Z'||'_') 这里的问题!!!
改成:
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')|| c=='_')
以上是关于c语言简单问题,输入一行英文,提取其中的单词。总是有个错误找不到,麻烦高手的主要内容,如果未能解决你的问题,请参考以下文章
C语言一个简单的问题:输入一段文本,计算其中每个单词的出现频率:下面是代码
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开
c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开