莫名其妙的字符
#include<stdio.h>#include<stdlib.h>
int i;
int main()
{
char n,ch,c;
FILE *fp1=fopen("a.c","r");//以只读的方式打开输入文件
FILE *fp2=fopen("b.c","r");//以只读的方式打开输出文件
if(fp1==NULL){//文件a.c不存在
printf("打开文件失败\n");
return 0;
}
else if(fp2==NULL)//文件b.c不存在
{
fclose(fp2);
for(i=0;(ch=fgetc(fp1))!=EOF;i++)
{
c=ch;
putchar(c);
}
fclose(fp1);
fp2=fopen("b.c","w");
for(i=0;i<n;i++)
{
putc(c,fp2);
putchar(c);
}
printf("\n");
fclose(fp2);
return 0;
}
else//两文件都存在
{
printf("请选择是否覆盖原文件:\n覆盖则输入A\n不覆盖则输入B\n");
scanf("%c",&n);
switch(n)//选择是否覆盖
{
case'A':
fclose(fp2);
for(i=0;(ch=fgetc(fp1))!=EOF;i++)
{
c=ch;
putchar(c);
}
fclose(fp1);
fp2=fopen("b.c","w+");
fflush(stdin);
for(i=0;i<n;i++)
{
putc(c,fp2);
putchar(c);
}
printf("\n");
fclose(fp2);
break;
case'B':break;
default:printf("enter data error!\n");
}
}
}
有没有哥哥姐姐帮我分析一下最后那行乱码咋去掉啊,烦恼{:5_90:}
return 0; #include<stdio.h>
int main(void)
{
int f = 1 ;
char c ;
FILE * fp1 , * fp2 ;
if((fp1 = fopen("a.c" , "r")) != NULL) {
if((fp2 = fopen("b.c" , "r")) != NULL) {
f = 0 ;
fclose(fp2) ;
printf("输出文件 <b.c> 已经存在\n") ;
printf("请决定是否覆盖 (y / n) : ") ;
c = getchar() ;
if(c == 'Y' || c == 'y') f = 1 ;
}
if(f) {
if((fp2 = fopen("b.c" , "w")) != NULL) {
c = fgetc(fp1) ;
while(! feof(fp1)) {
fputc(c , fp2) ;
putchar(c) ;
c = fgetc(fp1) ;
}
fclose(fp2) ;
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "无法创建输出文件 <b.c>\n") ;
fprintf(stderr , "\n") ;
}
}
fclose(fp1) ;
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "无法打开输入文件 <a.c>\n") ;
fprintf(stderr , "\n") ;
}
}
页:
[1]