#include <stdio.h>
#include <string.h>//字符串函数的头文件
//题目,输入两条C语言语句,第一句为正常的C语言变量定义语句,变量间可以有多个空格,包含数组,指针定义等
//第二局为变量运算语句
//输出:第二条语句中未定义变量
//int x12,y=1,num_stu=89,a[30],*p;
//Sum=num+x12*y;
//判断字符合法函数
int IsLegal(char c){
if('a'<=c&&c<='z'||'A'<=c&&c<='Z'){
return 1;
}
if('0'<=c&&c<='9'){
return 1;
}
if(c=='*'||c=='_'||c=='['||c==']'){
return 1;
}
return 0;
}
//需要好好学习一下
int GetKeys(char value[][20],char str[]){//二维数组做参数 需指明第二维数组长度
int i=0,j=0,m=0;
while(str[i]!='\0'){
if(IsLegal(str[i])&&(str[i-1]==','||str[i-1]==' ')){
while(IsLegal(str[i])){
value[j][m++]=str[i++];
}
value[j][m]='\0';
m=0;
j++;
}
i++;
}
value[j][m]='\0';
return j;
}
int GetKeys2(char value[][20],char str[]){//二维数组做参数 需指明第二维数组长度
int i=0,j=0,m=0;
while(str[i]!='\0'){
if(IsLegal(str[i])){
while((IsLegal(str[i])&&str[i]!='*')||str[i]=='*'&&!IsLegal(str[i-1])){
value[j][m++]=str[i++];
}
value[j][m]='\0';
m=0;
j++;
}
i++;
}
value[j][m]='\0';
return j;
}
void main(){
char str1[100],str2[100];
char keyWords1[100][20],keyWords2[100][20];
int wordCount1,wordCount2;
int i,j;
int isExit=0;
printf("输入第一句语句:");
gets(str1);//如果用scanf获取字符串 可以不用&,但是不可以读取空格 此处只可以用gets
printf("输入第二句语句:");
gets(str2);
wordCount1=GetKeys(keyWords1,str1);
wordCount2=GetKeys2(keyWords2,str2);
for(i=0;i<wordCount2;i++){
isExit=0;
for(j=0;j<wordCount1;j++){
if(strcmp(keyWords2[i],keyWords1[j])==0){
isExit=1;
break;
}
}
if(!isExit){
puts(keyWords2[i]);
}
}
}