错误,应为';]';在C中从txt文件扫描到结构时
我犯了一个奇怪的错误,我不知道为什么。我试图从txt文件扫描到结构数组,但出现错误。虽然数组长度有一个右括号,但它在SIZE之后需要一个']' 下面是发生错误的代码片段。我对学习结构是全新的,所以如果除了最初的问题之外还有什么问题,请让我知道 以下是结构定义:错误,应为';]';在C中从txt文件扫描到结构时,c,C,我犯了一个奇怪的错误,我不知道为什么。我试图从txt文件扫描到结构数组,但出现错误。虽然数组长度有一个右括号,但它在SIZE之后需要一个']' 下面是发生错误的代码片段。我对学习结构是全新的,所以如果除了最初的问题之外还有什么问题,请让我知道 以下是结构定义: struct employData{ char first[7]; char initial[1]; char last[9]; char street[16]; char city[11]; char state[2]; char zi
struct employData{
char first[7];
char initial[1];
char last[9];
char street[16];
char city[11];
char state[2];
char zip[5];
int age;
char sex[1];
int tenure;
double salary;
};
#define SIZE 1000
然后这里是不起作用的扫描功能:
int readData(employData){
int i = 0;
struct employData dataArray[SIZE];
fp = fopen("payfile.txt", "r");
if (fp != NULL){
printf("File opened. Scanning...");
while (!(feof(fp))){
fp = fscanf(fp, "%s %s %s %s %s %s %s %s %d %s %d %lf", dataArray[i].first, dataArray[i].initial, dataArray[i].last, dataArray[i].street, dataArray[i].city, dataArray[i].first, dataArray[i].state, dataArray[i].zip, dataArray[i].age, dataArray[i].sex, dataArray[i].tenure, dataArray[i].salary);
i++;
}
}
else {
printf("File open failed.");
}
}
谢谢
编辑:修复了明显的错误。仍然存在intellisense错误您的
fscanf
中有%c
,它们是针对单个字符的,而不是像您看起来那样针对字符串
对字符串使用%s
编辑:正如@luk32向我指出的,fscanf
需要文件指针作为第一位参数
fscanf = (fp, ...);
来源:我想在这里猜一下 你在某处有这样一行:
#define SIZE 1000;
因此,结构数组的定义将从以下内容展开:
struct employData dataArray[SIZE];
致:
现在错误是显而易见的
解决方案很简单:从宏定义中删除分号:
struct employData{
char first[7];
char initial[1];
char last[9];
char street[16];
char city[11];
char state[2];
char zip[5];
int age;
char sex[1];
int tenure;
double salary;
};
#define SIZE 1000
fscanf()
是否也应该将文件指针作为第一个参数=P人们很快就投了错误答案的票lol=)@luk32是的,错过了。现在编辑。而且,我很快就错过了那个错误:)哦,是的。在这两个方面都犯了愚蠢的错误,但我似乎仍然不明白为什么我会因为想要额外的“]”而出现intellisense错误?因为它不是在寻找指针,而是一个字符。您提供了一个指向字符数组的指针,而不是一个char
,它将由要放置字符的数组元素指示,这将需要[]
。它是否编译?它是否按预期工作?也许“智能”不是那么智能。有时会发生。首先编译,然后处理警告。SIZE
的定义是什么?我修复了fscanf
中的所有错误,无法重现您抱怨的错误。它可能来自代码中的其他地方--可能是缺少的分号。你知道,在C语言中,你可以在相同的位置拆分行,就像在空格中一样。这有助于提高可读性。employData
参数的目的是什么?你没有用它做任何事。您还没有为它声明类型。对于一个变量和一个结构类型使用相同的名称可能是个坏主意,这会让人困惑。是的,这就解决了它。学习编程真的显示了我犯愚蠢错误的能力。谢谢