当程序中对文件的所有写操作完成之后,必须调用fclose(fp)函数关闭文件
当程序中对文件的所有写操作完成之后,不一定要调用fclose(fp)函数关闭文件
只有对文件进行输入操作之后,才需要调用fclose(fp)函数关闭文件
只有对文件进行输出操作之后,才能调用fclose(fp)函数关闭文件
第1题:
以下程序试图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#时结束输入和输出操作,但程序有错。 #include<stdio.h> main() { FILE *fout; char ch; fout=fopen('abc.txt','W'); ch=fgetc(stdin); while (ch!='#') { fputc (ch,fout); ch=fgetc(stdin); } fclose (fout); } 出错的原因是( )。
A.函数fopen调用形式错误
B.输入文件没有关闭
C.函数fgetc调用形式错误
D.文件指针stdin没有定义
第2题:
已知数据文件IN68.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果4位数各位上的数字均是奇数,则统计出满足此条件的个数cnt,并把这些4位数按从大到小的顺序存入数组b中。最后调用函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT68.DAT文件。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
include<stdio.h>
define MAX 200
int a[MAX],b[MAX],cnt=0;
void jsVal()
{
}
void readDat ( )
{
int i;
FILE *fp;
fp= fopen ("IN68. DAT", "r");
for (i=0; i<MAX; i++)
fscanf (fp, "%d", &a [i])
fclose (fp);
}
void main ( )
{
int i;
readDat ( );
jsVal ( );
printf ("满足条件的数=%d\n", cnt);
for (i=0; i<cnt; i++)
printf ("%d",b[i]);
printf ("\n");
writeDat ( );
}
writeDat ( )
{
FILE *fp;
int i;
fp= fopen ("out68.dat", "w");
fprintf (fp, "%d\n", cnt);
for (i=0; i<cnt; i++)
fprintf (fp, "%din", b [i]);
fclose (fp);
}
第3题:
有以下程序,其功能是:以二进制 “ 写 ” 方式打开文件 d1.dat ,写入 1 ~ 100 这 100 个整数后关闭文件 。 再以二进制 “ 读 ” 方式打开文件 d1.dat , 将这 100 个整数读入 到 另一个数组 b 中 , 并打印输出 , 请填空。
#include <stdio.h>
main()
{ FILE *fp;
int i,a[100],b[100];
fp=fopen("d1.dat","wb");
for(i=0;i<100;i++) a[i]=i+1;
fwrite(a,sizeof(int),100,fp);
fclose(fp);
fp=fopen("d1.dat", 【 20 】 );
fread(b,sizeof(int),100,fp);
fclose(fp);
for(i=0;i<100;i++) printf("%d\n",b[i]);
}
第4题:
函数ReadDat()的功能是实现从文件IN35.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数$ortCharD(),该函数的功能是:以行为单位对字符按从大到小的顺序进行排序,捧序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT35.DAT中。
例如,原文:dAe,BfC
CCbbAA
结果:fedCBA,
bbCCAA
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
include<stdio.h>
include<string.h>
include<conio.h>
char xx[50] [80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void SortCharD()
{
}
void main()
{
clrscr();
if (ReadDat())
{
printf ("数据文件 IN35.DAT 不能打开!\n\007 ");
return;
}
SortCharD();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN35.DAT","r"))==NULL)
return 1;
while (fgets(xx[i],80,fp)!=NULL)
{
p=strchr(xx[i],'\n');
if (p) *p=0;
i++;
}
maxline=i;
fclose(fp);
return 0;
}
void WriteDat()
{
FILE *fp;
int i;
clrscr();
fp=fopen("OUT35.DAT","w");
for(i=0;i<maxline;i++)
{
printf ("%s\n",xx[i]);
fprintf(fp,"%s\n',xx[i]);
}
fclose(fp);
}
第5题:
请补充main 函数,该函数的功能是:把文本文件B中的内容追加到文本文件A的内容之后。
例如,文佃的内容为“I’m ten.”,文件A的内容为“I’ m a student!”,追加之后文件A的内容为“I’m a student !I’m ten.”
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数main 的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio, h>
include<conio. h>
define N 80
main()
{
FILE *fp, * fp1, *fp2;
int i;
char c[N] ,t, ch;
clrscr ();
if ((fp=fopen ("A. dat ", "r") ) == NULL)
{
printf ("file A cannot be opened\n");
exit (0);
}
printf("\n A contents are : \n\n");
for (i=0; (ch=fgetc (fp)) !=EOF; i++)
{
C [i]=ch;
putchar (c [i]);
fclose (fp);
if((fp=fopen ("B. dat", "r") )==NULL)
{
printf ("file B cannot be opened\n");
exit (0);
}
printf("\n\n\nB contents are : \n\n");
for (i=0; (ch=fgetc (fp)) !=EOF; i++)
{
c [i] =ch;
putchar (c [i]);
}
fclose (fp);
if ( (fp1=fopen ("A.dat" ,"a"))【 】(fp2
=fopen ("B. dat", "r") ) )
{
while ( (ch=fgetc (fp2)) !=EOF)
【 】;
}
else
{
printf("Can not open A B !\n");
}
fclose (fp2);
fclose (fp1);
printf ("\n***new A contents***\n\n");
if ( ( fp=fopen ("A. dar", "r") )==NULL)
{
printf ("file A cannot be opened\n");
exit (0);
}
for (i=0; (ch=fgetc (fp)) !=EOF;i++)
{
c [i] =ch;
putchar (c [i] );
}
【 】;
}
第6题:
A.-1
B.随机值
C.0
D.1
第7题:
已知数据文件INI.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数isVal(),其功能是:如果4位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT1.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
include <stdio.h>
define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
}
void readDat()
{
int i;
FILE *fp;
fp = fopen("IN1.DAT", "r");
for(i = 0; i <MAX; i++) fscanf(fp, "%d", ia[i]);
fclose (fp);
}
main ( )
{
int i;
readDat ();
jsVal ();
printf("满足条件的数=%d\n", cnt);
for(i = 0; i < cnt; i++) printf("%d ", b[i]);
printf ("\n");
writeDat ();
}
writeDat ( )
{
FILE *fp;
int i;
fp = fopen("OUT1.DAT", "w");
fprintf(fp, "%d\n", cnt);
for(i = 0; i < cnt; i++) fprintf(fp, "%d\n", b[i]);
fclose (fp);
}
第8题:
当顺利执行了文件关闭操作时,fclose函数的返回值是
A.-1
B.TRUE
C.0
D.1
第9题:
以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。
include<stdio.h>
main( )
{________*fp;
char a[5]=(’1’,’2’,’3’,’4’,’5’),i;
fp=fopen(”f.txt”,”w”);
for(i=0;i<5;i++)fputc(a[i],fp);
fclose(fp);
}
第10题:
函数ReadDat()的功能是实现从文件IN35.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharD(),该函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT35.DAT中。
例如,原文:dAe,BfC
CCbbAA
结果:fedCBA,
bbCCAA
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意;部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WrteDat()的内容。
试题程序:
include<Stdio.h>
include<String.h>
include<conio.h>
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void SortCharD()
{
}
void main()
{
Clrscr();
if (ReadDat())
{
printf("数据文件 IN35.DAT不能打开!\n\007");
return;
}
SortChar D();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
Char*p;
if((fp:fOpen("IN35.DAT","r"))==NULL)
return 1;
while (fgets(xX[i],80,fp)!=NULL)
{
p=strchr(xX[i],"\n");
if (p) *p:0;
i++;
}
maxline=i;
fclose(fp);
return 0;
}
void WriteDat()
{
FILE *fp;
int i;
Clrscr();
fp:fopen("OUT35.DAT","w");
for(i:0;i<maxline;i++)
{
printf("%s\",xx[i]);
fprintf(fp,"%s\n",xx[i]);
}
fclose(fp);
}