.h文件中方法签名中的语法错误

时间:2014-09-20 03:44:27

标签: c gcc syntax-error

我试图编写一个C语句,从文件中读取单词,删除非字母数字字符,计算它们发生的次数,并将它们打印出来,排序和格式化为包含该单词的文件及其在文本中的相应计数。

我遇到了这个编译错误,我无法弄清楚问题是什么,特别是因为它在前一个方法签名中的节点* top没有问题...

我得到的错误是:

  

proj1f.h:12:错误:语法错误之前" FILE"

.h档案:

#ifndef PROJ1F_H
#define PROJ1F_H

typedef struct node {
  char *data;
  struct node *left;
  struct node *right;
} node;

void insert(char *x, node *top, int count);

void print(node *top, FILE *file, int *count, int index);

#endif

函数.c文件

#include "proj1f.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

void insert(char *x, node *top, int count){
    if(top == NULL){    //place to insert
    node *p = malloc(sizeof(node));
        p -> data = x;
        p -> left = p-> right = NULL;
        top = p;
    count++;
    }
    else if(x == top -> data)
        count++;
    else if(x < top -> data)
        insert(x, top -> left, count);
    else //x > top -> data;
        insert(x, top ->  right, count);
}

void print(node *top, FILE *file, int *count, int index){
    if(top == NULL)
        fprintf(file, "%s", "no input read in from file");
    else{
        print(top -> left, file, count, index++);
        fprintf(file, "%-17s %d\n", top -> data, count[index]);
      print(top -> right, file, count, index++);
    }
}

Main .c档案

#include "proj1f.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>


int main(int argc, char *argv[]) {
int count[300];
int index = 0;
int wordInFile = 0;
node *root = NULL; 
FILE * readFile = fopen(argv[1], "r");

while(feof(readFile)) {
  char word[30];
  char fword[30];
  fscanf(readFile, "%s", word);

  //format word
  int findex = 0;
  int i;
  for(i = 0; i < strlen(word); i++) {
    if(isalnum(word[i])) {
      fword[findex] = word[i];
      findex++;
    } else if(word[i] == NULL) {
      fword[findex] = word[i];
      break;
    }
  }

  //insert into tree
  insert(fword, root, count[wordInFile]);
  wordInFile++;
}

fclose(readFile);
FILE *writeFile = fopen(argv[2], "w+");
print(root, writeFile, count, index);
fclose(writeFile);

return 0;
}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您在<stdio.h>之前包含了项目标题,因此FILE类型尚未定义。

您需要在项目标题中加入<stdio.h>,或在<stdio.h>之后加入项目标题。