我必须为我的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