gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:19 25 4
gpt4 key购买 nike

我正在尝试编写一个 C 语言索引程序,它从文件中读取单词,去除非字母数字字符,计算它们出现的次数,然后将它们打印出来、排序和格式化到包含以下内容的文件中该词及其在文本中的相应计数。

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

我得到的错误是:

proj1f.h:12: error: syntax error before "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++);
}
}

主.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;
}

如有任何帮助,我们将不胜感激。

最佳答案

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

您需要包含 <stdio.h>来自您的项目标题,或在 <stdio.h> 之后包含您的项目标题.

关于c - .h 文件中方法签名的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25944969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com