【发布时间】:2015-11-29 12:20:45
【问题描述】:
我正在尝试构建一个 C 程序,它从文件中读取内容、标记内容并同时对标记进行分类,将标记复制到 temp 数组中。我的目标是打印以前没有的标记打印。换句话说,如果令牌已经打印,则跳过打印此令牌。我实现这一点的方法是创建一个函数来检查令牌是否出现在我的数组 temp 中。如果令牌出现在数组 temp 中,则返回 1,否则返回 -1。我的问题是,该功能不起作用,isAdded 始终不是 1。因此,它仍然打印以前打印的令牌。我跟踪了我的代码,这对我来说似乎是正确的。我不知道为什么它总是返回 -1。
这是我的代码:
char *temp[MAX]; /*globally declared*/
void tokenize(FILE *input){
char *token;
int k=0;
char word[1000];
while(!feof(input)){
fgets(word,1000,input);
token = strtok(word, " \t\n");
while(token!=NULL){
if(isAdded(token)!=1){
if(isKeyword(token)==1){
printf("%s, %s\n", token, token);
}
temp[k] = (char*)malloc(strlen(token)+1);
strcpy(temp[k],token);
k++;
}
token= strtok(NULL, " \t\n");
}
}
}
int isAdded(char *token){
int i=0;
while(temp[i]!=NULL){
if(strcmp(temp[i],token)==0){
return 1;
break;
}
i++;
return -1;
}
}
int isKeyword(char *token){
int i=0;
while(resWord[i]!=NULL){
if(strcmp(resWord[i],token)==0){
return 1;
break;
}
i++;
}
}
【问题讨论】:
-
面临什么问题?