0
這是一個代碼到輸入文件中的數據到一個新的文件,如果輸出文件已經存在,用戶將有選擇提供新地址或退出。 當我把goto readout
放在開關裏面時,開關就開始工作了,但是之後程序退出了,而沒有輸出文件地址。 這是截圖: goto inside switch case case奇怪的工作
,代碼:
#include<stdio.h>
int main()
{
int n;
FILE *in,*out;
char inadd[50],outadd[50],ch;
readin:
printf("Enter the address of input file: ");
gets(inadd);
in=fopen(inadd,"r");
if(in==NULL) //reading and validating input file address
{
printf("There is an error with the opening of the file, please reenter the file name.\n");
goto readin; //readin call
}
readout:
printf("Enter the address of output file: ");
gets(outadd);
out=fopen(outadd,"r");
if(out!=NULL) //reading and validating output file address
{
printf("File already exists, to reenter file address enter 1 & to exit enter 2:");
scanf("%d",&n);
switch (n) //switc-case
{
case 1: printf("\n");
goto readout; //readout call
break;
case 2: exit(0);
}
}else //file is read and copied to input file.
{
out=fopen(outadd,"w");
while(!feof(in))
{
fscanf(in,"%c",&ch);
fprintf(out,"%c",ch);
}
fclose(in);
fclose(out);
printf("\n\nSuccess!\nFile copied successfully\n\n");
}
}
爲什麼不使用do ... while循環? –