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]);

参考技术A //int isKeyWord(char c)函数错误。
#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语言:输入一行字符,统计其中的单词个数,单词之间用空格分开

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

C语言,输入一行文字,单词间以空格分隔,然后分离其中的单词按每行一个单词输出,程序有了,求解释