我必須爲我的C編程類編寫一個程序,它需要一個文本文件概述Letter頻率,然後使用該信息來接受另一個文本文件輸入使用該字母頻率對其進行加密和解密。起初,我並不真正懂得如何開始......所以我決定開始將我所有的想法都投入到一個主要功能中,並試圖從那裏開始工作,但我覺得我正在這樣做這樣一個複雜的方式,現在我只是想測試一下,看看是否使用了結構的概念,通過在屏幕上輸出一系列結構與我的所有信息,但我得到一個錯誤:Line 43 - >下標值既不是數組也不是指針。C - 凱撒密碼程序 - 下標值既不是數組也不是指針
我從來沒有見過這樣的錯誤,我不確定它是什麼意思...我希望我能告訴你我到目前爲止,也許有人可以向我解釋這個錯誤,並給我關於如何着手編寫這些代碼的一些建議(請教建議和解釋,因爲我知道這些材料是有害的^ _ ^)。
這裏是我的代碼:
struct keyFreq
{
char letter;
float freq;
};
int main()
{
FILE *fin;
char freqname[20];
char derp;
char temp[6];
int spacecounter = 0;
printf("What is the name of the frequency file? ");
scanf("%s", freqname);
fin = fopen(freqname, "r");
struct keyFreq k[25];
while(!feof(fin)) {
fscanf(fin, "%c", &derp);
int i;
for(i = 0; i < 26; ++i) {
if((isalpha(derp)) && k[i].letter == NULL) {
k[i].letter = derp;
break;
}
if((isadigit(derp)) || derp == '.') {
int j;
for(j = 0; j < 7; ++j) {
if(temp[j] == -1)
temp[j] = derp;
}
break;
}
if((isspace(derp)) && (k[i].freq == '\0') && (spacecounter >= 2)) {
double now;
int k;
now = atof(temp);
for(k = 0; k < 7; ++k)
temp[k] = -1;
k[i].freq = now; //Problematic Line <--
spacecounter = 0;
break;
}
if((isspace(derp)) && spacecounter < 2)
spacecounter = spacecounter + 1;
}
}
return 0;
}
k在此塊中聲明爲int - 這會覆蓋較早的數組定義 – 2012-02-05 22:16:29
如果您知道哪一行是第43行(包含錯誤的那一行),將會有所幫助 – Veger 2012-02-05 22:18:02
http://stackoverflow.com/questions/5431941/in-c-is-while-feof-always-wrong – 2012-02-05 22:22:41