有一道c程序,有一句不明白,是看一个文本中有几个英文单词

来源:百度知道 编辑:UC知道 时间:2024/06/19 12:42:47
#include<stdio.h>
#include<string.h>
#include<ctype.h>

int sum(char[]);
void main(){char s[100];
printf("请输入一个文本:\n");
gets(s);
printf("单词个数:%d",sum(s));
}

int sum(char s[]){int i=0,j=0,turn=0;
char temp[20]={'\0'};

do{
if(isalpha(s[i]))
{temp[j++]=s[i];}
else{temp[j]='\0';
if(strlen(temp)>0)
turn=turn+1;
j=0; }

}while(s[i++]);
return turn;
}

其中 char temp[20]={'\0'}; 是什么意思,好像也可以写成char temp[20];为什么后面要托一个“={'\0'}”

类似于一个清零操作,主要是考虑到程序的严谨性吧

这个在汇编里常见一点,类似用EAX的话一般都会
保存到堆栈之后:XOR EAX,EAX来把EAX清零

\0表示字符串结束.

我的思路是: 单词跟单词之间必定有空格或标点符号相隔.

直接判断 s[i]是否等于 空格、逗号、冒号、句号等标点符号

若是,单词计数变量加1 不是的话继续循环。直到 s[i]='\0'.