在项目代码中执行文件打印时出错:块C
嘿,所以我有一个我一直在做的项目,所有的东西都可以工作,但是当我尝试做一个选项时,用户通过切换:case将数据保存到一个文件的选项,它停止了工作(切换成功了) 我不明白为什么,因为我检查了很多教程,我的代码和他们的一样 出于某种原因,它使我的开关无法工作,并声明了一个错误:在项目代码中执行文件打印时出错:块C,c,codeblocks,fopen,file-handling,fclose,C,Codeblocks,Fopen,File Handling,Fclose,嘿,所以我有一个我一直在做的项目,所有的东西都可以工作,但是当我尝试做一个选项时,用户通过切换:case将数据保存到一个文件的选项,它停止了工作(切换成功了) 我不明白为什么,因为我检查了很多教程,我的代码和他们的一样 出于某种原因,它使我的开关无法工作,并声明了一个错误:跳转到case label-fpermissive in codeblocks int main() { double trec [8] = {0,0,0,0,0,0,0,0}; int i;
跳转到case label-fpermissive in codeblocks
int main()
{
double trec [8] = {0,0,0,0,0,0,0,0};
int i;
int a;
double exp;
FILE *fp;
;
switch(a)
{
case 0:
exit (0);
break;
case 3:
int velk = 8;
i = 0;
fp=fopen("text.txt", "w+");
//for(int i = 0; i < velk; ++i){
// fprintf(fp, "%lf ", trec[i]);
//}
fprintf(fp, "%d %lf",1 , trec[i]);
fclose(fp);
break;
case 4:
i = 1;
while(i<8){
printf(" %s its %lf",day[i], trec[i]);
i++;
}
break;
intmain()
{
双树[8]={0,0,0,0,0,0,0};
int i;
INTA;
双经验;
文件*fp;
;
开关(a)
{
案例0:
出口(0);
打破
案例3:
int-velk=8;
i=0;
fp=fopen(“text.txt”,“w+”);
//对于(int i=0;i 而(i由于在开关情况下缺少括号{},您的代码无法编译:
case 3:
{
int velk = 8;
i = 0;
fp=fopen("text.txt", "w+");
//for(int i = 0; i < velk; ++i){
// fprintf(fp, "%lf ", trec[i]);
//}
fprintf(fp, "%d %lf",1 , trec[i]);
fclose(fp);
}
案例3:
{
int-velk=8;
i=0;
fp=fopen(“text.txt”,“w+”);
//对于(int i=0;i
欢迎使用SO。您在谈论代码的哪一部分?对于这些非英语描述,大多数人无法直接从打印的菜单中理解。请添加您的输入、输出以及预期输出。“停止工作”这不是一个有用的问题描述。@Gerhardh这是fileopen aka case 3的一部分,用于创建一个文件,您可以删除所有不相关的代码。如果您在测试中只使用1个案例,为什么每个人都需要阅读所有其他6个选项?您几乎不需要理解它,所有代码都可以工作,但当我实现文件打开时,它打破了这个案例切换您没有任何函数调用的验证。在未检查数字或解析参数的情况下,切勿调用scanf
和相关函数。在未检查NULL
的返回值的情况下,也不得使用fopen
。可能是因为我在显示开关盒没有br的教程中操作过ackets,在那之前它也工作过,但我知道如果这是正确的方法,它可能会因为没有括号和必须打开一个fileVariables无法在switch case语句中声明而崩溃,就像您在“int velk=8;”中所做的那样有关详细信息,请参阅我在其他情况下使用了它,它也起到了作用。什么意思不能在case语句中声明,在声明新变量时需要使用括号。更改现有变量值或调用函数时不需要括号。代码编译时会发出警告。顺便说一句,内容不需要括号在switch()
语句中的case:
节。但是,当尝试在多个case:
语句中声明具有相同名称的变量时,必须使用这些语句。