【发布时间】:2015-03-20 08:40:08
【问题描述】:
对于我们的家庭作业,我们必须编译我们在学校编写的程序。我输入它没有错误(与我的同事验证)并且程序无法运行,我正在使用 DEV C++ 并且错误日志显示,文件无法识别:文件格式无法识别。
我尝试使用整数而不是双精度,但它保持不变...我不知道出了什么问题。
#include <stdio.h>
#define VELIKOST 23
int main (void)
{
double dPolje[VELIKOST];
int iStevec,iVecje=0;
printf("Algoritem, ki določi koliko elementov podatkovnega polja imajo vrednosti vecje ali enake od 10 \r\n");
for(iStevec=0;iStevec<VELIKOST;iStevec++)
{
printf("Vnesite %i. stevilo:",iStevec=iStevec+1);
fflush(stdin);
scanf("%lf",&dPolje[iStevec]);
if(dPolje[VELIKOST]>=10)
{
iVecje++;
printf("Element dPolje [%i]=%f.",iStevec,dPolje[iStevec]);
}
printf("%i elementov polja je imelo vecje ali enako vredost 10.",iVecje);
return(0);
}
}
【问题讨论】:
-
您确实意识到
fflush(stdin)是未定义的行为,对吧? (你为什么还要刷新它?stdin是一个输入流……你不想刷新stdout,而是?)另外,你确实意识到iStevec=iStevec+1是等同于++iStevec,所以每次迭代都会增加循环计数器两次?此外,“无法识别文件格式”错误(如果是编译器错误)与数组无关,根本与您的代码无关,而是与您的编译器设置和/或调用有关。 -
@TheParamagneticCroissant 他们在一些教程中找到了它们。
-
也许Dev C++在读取源文件时没有使用正确的字符编码?如果 IDE 尝试将其读取为 US-ASCII 或其他不正确的编码,则字符串文字中的非拉丁字符可能会导致此错误。
-
scanf("%lf",&dPolje[iStevec]);的检查结果 -->if (1 != scanf("%lf",&dPolje[iStevec])) break; -
一个简单的“hello World”程序也能工作吗?可能是你编译的代码和你的机器不兼容。