2014-05-01 42 views
-2

我收到一個奇怪的錯誤,我不知道爲什麼。我試圖從一個txt文件掃描到一個結構數組,我得到一個錯誤。它需要SIZE後的']',即使我有一個數組長度的右括號。錯誤,從txt文件掃描到C中的結構時出現'''''

下面是錯誤發生的代碼片段。我是全新的學習結構,所以如果除了最初的問題以外都有其他錯誤,請告訴我。

這裏是結構定義:

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; 

}; 

然後在這裏是行不通的掃描功能:

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."); 
} 
} 

謝謝!

編輯:修正了明顯的錯誤。仍然存在智能感知錯誤

+0

是否編譯?它是否按預期工作?也許「智能」不是那麼聰明。有時候這種情況會發生。首先編譯它,然後處理警告。 – luk32

+0

'SIZE'的定義是什麼? – usr2564301

+0

我修復了'fscanf'中的所有錯誤,並且無法重現您所抱怨的錯誤。它可能來自代碼中的其他地方 - 可能是缺少分號。 – Barmar

回答

1

我goint在這裏猜...

你有地方的線路像這樣:

#define SIZE 1000; 

這樣的定義結構數組將從以下部分擴展:

struct employData dataArray[SIZE]; 

到:

struct employData dataArray[1000;]; 

而現在的錯誤是顯而易見的。

解決辦法很簡單:從宏定義刪除分號:

#define SIZE 1000 
+0

是的,修復它。學習編程確實給了我我犯愚蠢錯誤的能力。謝謝! – Pahjay

3

您的fscanf中有%c,它們用於單個字符,而不是您似乎有的字符串。

使用%s代替字符串。

編輯:as @ luk32指出,fscanf需要文件指針作爲第一位參數。

fscanf = (fp, ...); 

來源:http://www.manpagez.com/man/3/fscanf/

+2

不應該'fscanf()'也有第一個參數的文件指針?= P人們是如此之快的投票不正確的答案lol =) – luk32

+0

@ luk32是的,錯過了。現在編輯。另外,我很快錯過了那個錯誤:) – AntonH

+0

哎呀,是的。兩方面的愚蠢的錯誤,但我仍然無法弄清楚爲什麼我想要額外的']'intellisense錯誤? – Pahjay