【发布时间】:2015-04-21 17:13:03
【问题描述】:
我的 C 程序如下。它试图从文件中读取一组值,并创建一个表格来生成一些浮点数的平均值。
int main(void)
{
int lake, beach, samples, count, sum;
float e_coli, ave;
char recc[20], lakename[20], beachname[20];
FILE *in;
sum = 0;
count = 0;
in = fopen("july15.data", "r");
printf("Lake | Beach | Avg E Coli Level | Reccomendation |\n");
while (1)
{
fscanf(in, "%d, %d, %d", &lake, &beach, &samples);
count = samples;
while (count < samples)
{
fscanf(in, "%f", e_coli);
sum = sum + samples;
}
ave = sum / samples;
if (lake == 1)
lakename[] = "Ontario";
else if (lake == 2)
lakename[] = "Erie";
else if (lake == 3)
lakename[] = "Huron";
else if (lake == 4)
lakename[] = "Muskoka";
else if (lake == 5)
lakename[] = "Simcoe";
if (beach == 100)
beachname[] = "Kew Beach";
else if (beach == 101)
beachname[] = "Sunnyside Beach";
else if (beach == 102)
beachname[] = "Sandbanks";
else if (beach == 201)
beachname[] = "Port Dover";
else if (beach == 202)
beachname[] = "Port Burwell";
else if (beach == 203)
beachname[] = "Crystal Beach";
else if (beach == 301)
beachname[] = "Goderich";
else if (beach == 302)
beachname[] = "Sauble Beach";
else if (beach == 303)
beachname[] = "Kincardine";
else if (beach == 401)
beachname[] = "Muskoka Beach";
else if (beach == 501)
beachname[] = "Sibbald Point";
if (samples < 3)
recc[] = "INSUFFICENT DATA";
else if (samples > 3 && ave < 50)
recc[] = "OPEN";
else if (samples > 3 && ave > 50)
recc[] = "CLOSED";
printf("%s, %s, %f, %s\n", lakename, beachname, ave, recc);
}
return(0);
}
不幸的是,它在第 22、32 和 54 行产生了错误 parse error before "]" token。实际上,这些是定义字符串的第一个区域。所以第22行是lakename[] = "Ontario"第32行是beachname[] = "Kew Beach",第54行是recc[] = "INSUFFICIENT DATA"。
我尝试将空格数插入[](即lakename[9] = "Ontario"),但随后出现错误"assignment makes integer from pointer without cast"。
【问题讨论】:
-
要复制/连接 C-“字符串”,请使用
strcpy()(man7.org/linux/man-pages/man3/strncpy.3.html) 或strcat(): (man7.org/linux/man-pages/man3/strcat.3.html)。 -
另外请正确缩进您的代码。
标签: c arrays string loops while-loop