10.1 选择题
(797) 下面函数那些是基于数据块的读写_____。
a.int feof(FILE *fp)
b.int fprintf(FILE *fp, const char *control_string)
c.unsigned fwrite(void *buffer, int size, int n, FILE *fp)
d.unsigned fread(void *buffer, int size, int n, FILE *fp)
(d)
(798) 设有以下结构体类型_____。
struct st
{
char name[8];
int num;
float s[4];
}student[50];
并且结构体数组student中的元素都已有值,若要将这些元素写到Flash文件fP中,以下不正确的形式是______。
a. fwrite(student, sizeof(struct st), 50, fp);
b. fwrite(student, 50*sizeof(stuct st), 1, ft);
c. fwrite(student, 25*sizeof(struct st), 25, fp);
d. for(i = 0; i < 50; i++)
()
(799) 若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串不应该是____。
a. "ab+"
b. "wb+"
c. "rb+"
d. "ab"
(d)
(800) 以下read函数的调用形式中,参数类型不正确的是_____。
a. read(int fd, char *buf, int count)
b. read(int *buf, int fd, int count)
c. read(int fd, int count, char *buf)
d. read(int count, char *buf, int fd)
(b)
(801) fscanf函数的不正确调用形式是____。
a. fscanf(fp, 格式字符串, 输出表列),
b. fscaRf(格式字符串, 输出表列, fp);
c. fscanf(格式字符串, 文件指针, 输出表列)
d. fscanf(文件指针, 格式字符串, 输入表列)
(b)
(802) 若以"a+"方式打开一个已存在的文件.则以下叙述不正确的是____。
a. 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
b. 文件打开时,原有文件内容不被删除,位置指针移到文件开头和谈操作
c. 文件打开时,原有文件内容被删除,只可作写操作
d. 以上各种说法皆不正确
(a)
(803) feek函数的正确调用形式是______。
a. fseek(文件类型指针,起始点,位移量);
b. fseek(文件类型指针,位移量,起始点);
c. fseek(位移量,起始点,b);
d. fseek(起始点,位移量,文件类型指针);
(b)
(804) 下面语句不正确的是_____。
a. 打开文件 FILE1:fi = fopen("FILE1", "w");
b. 关闭已打开的 FILE1:fclose(fi);
c. 从文件 FILE1 中读取了一个字符串:fscanf(fi,"%s", str);
d. 把数据写入一个打开的文件:fprintf("general file", fi);
(d)
(805) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为_____。
a. 0 b. 1 c. -1 d. 一个非0值
(a)
(806) 下列关于C语言数据文件的叙述中正确的是_____。
a. 文件由ASCII码字符序列组成,C语言只能读写文本文件
b. 文件由二进制数据序列组成,C语言只能读写二进制文件
c. 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
d. 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(d)
(807) C语言中的文件类型划分为 。
a. 索引文件和文本文件两种 b. ASCII文件和二进制文件两种
c. 只有文本文件一种 d. 只有二进制文件一种
(b)
10.2 填空题
(808) 下面程序用变量const统计文件中字符的个数。请在横线处填入适当内容。
#include
main()
{
FILE *fp;
long count = 0;
If ((fp = fopen("letter.dat", _______)) == NULL)
{
printf("cannot open file\n");
exit(0);
}
while (!feof(fp))
{
_____________;
_____________;
}
printf("count=%ld\n",count);
fclose(fp);
}
10.3 问答与设计
(809) 指出下面程序的错误并改正:
#include
void main(int argc, char *argv[])
{
char c;
FILE *fp1, *fp2;
If (argc != 3)
{
printf("Be lack of parameters\n");
exit(1);
}
if (((fp1 = fopen(argv[1], "rb")) == NULL) || ((fp2 = fopen(argv[2], "w+b")) == NULL))
{
printf("Can not open the file\n");
exit(1);
}
while (!feof(fp1))
{
c = getc(fp1);
putc(c, fp2);
}
fclose(fp1);
fclose(fp2);
}
(810) 阅读下面程序,说明其功能:
#include
main()
{
FILE *fp;
T_S8 ch;
if ((fp = fopen("file2.txt", "w")) == NULL)
{
printf("can't open this file");
exit(-1);
}
while ((ch = getchar()) != '\n')
{
fputc(ch, fp);
}
fclose(fp);
}
(811) 阅读下面程序,说明其功能:
#include
main()
{
FILE *fp;
T_S8 ch;
If ((fp = fopen("file2.txt", "r")) == NULL)
{
printf("can't open this file");
exit(-1);
}
while ((ch = fgetc(fp)) != EOF)
{
putchar(ch);
}
fclose(fp);
}
(812) 阅读下面程序,说明其功能:
#include
main()
{
FILE *fp;
T_S8 ch;
If ((fp = fopen("file1.txt", "r")) == NULL)
{
printf("can't open this file");
exit(-1);
}
while (fgets(string, 81, fp) != NULL)
{
printf("%s", string);
}
fclose(fp);
}
(813) 阅读下面程序,说明其功能:
#include
main()
{
FILE *fp;
T_S8 ch;
If ((fp = fopen("file3.txt", "r")) == NULL)
{
printf("can't open this file");
exit(-1);
}
fseek(fp, 0L, 2)
while ((fseek(fp, -1L, 1)) != -1)
{
ch = fgetc(fp);
putchar(ch);
if (ch == '\n')
{
fseek(fp, -2L, 1);
}
else
{
fseek(fp, -1, 1);
}
fclose(fp);
}
}
(814) 阅读下面程序,说明其功能:
#include
T_S8 buff[512];
Main(int argc, char *argv[])
{
T_U16 bfsz = 32768;
T_S16 n = 0;
T_S8 ch;
FILE *fp1, fp2;
If ((fp1 = fopen(argv[1], "rb")) == 0)
{
printf("can't open file %s", argv[1]);
exit(-1);
}
if ((fp2 = fopen(argv[2], "wb")) == 0)
{
printf("can't open file %s", argv[2]);
exit(-1);
}
while (fread(buff, bfsz, 1, fp1))
{
fwrite(buff, bfsz, 1, fp2);
n++;
}
fseek(fp1, 512L*n, 0);
ch = fgetc(fp1);
while (!feof(fp1))
{
fputc(ch, fp2);
ch = fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
}
(815) 请说明实现文件连接的算法。
(816) 有两个Flash文件,各自存放若干已排好序的字符,要求将两个文件合并,合并后仍然保持有序。请说明实现算法。
(817) 什么是流(stream)?
(818) 怎样重定向一个标准流?
(819) 怎样恢复一个重定向了的标准流?
(820) stdout能被强制打印到非屏幕设备上吗?
(821) 文本模式(textmode)和二进制模式(binarymode)有什么区别?
(822) 怎样读写以逗号分界的文本?
(823) 怎样判断是使用流函数还是使用低级函数?
(824) 怎样列出某个目录下的文件?
(825) 怎样列出一个文件的日期和时间?
(826) 怎样对某个目录下的文件名进行排序?
(827) 怎样判断一个文件的属性?
(828) 怎样查看PATH环境变量?
(829) 怎样打开一个同时能被其它程序修改的文件?
(830) 怎样确保只有当前程序能存取一个文件?
(831) 怎样防止其它程序修改当前正在修改的那部分文件内容?
(832) 怎样避开"Abort,Retry,Fail"消息?
阅读(856) | 评论(0) | 转发(0) |