Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误,应为';]';在C中从txt文件扫描到结构时_C - Fatal编程技术网

错误,应为';]';在C中从txt文件扫描到结构时

错误,应为';]';在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

我犯了一个奇怪的错误,我不知道为什么。我试图从txt文件扫描到结构数组,但出现错误。虽然数组长度有一个右括号,但它在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
然后这里是不起作用的扫描功能:

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
参数的目的是什么?你没有用它做任何事。您还没有为它声明类型。对于一个变量和一个结构类型使用相同的名称可能是个坏主意,这会让人困惑。是的,这就解决了它。学习编程真的显示了我犯愚蠢错误的能力。谢谢