C语言文件习题
计算机二级C语言文件习题答案
(4)fseek(fp,-2L,SEEK_END);文件定位于文件末尾的倒数第二个字符型字节处,即定位于整数‘c’的前面。
(5)fread(&t,1,1,fp);从文件中读取一个1字节的数字,并且赋值给变量t .即t变量得到的值为‘c’.
(6)关闭文件。
(7)输出变量t的值,即c.
2) i=2,i<6为真,执行循环体fprintf(fp,”%d”,i);给fp指针打开的文件out.dat中写入数据2。判断i%3==0为假,因此不执行fprintf(fp,”\n”)。
3) i=3,i<6为真,执行循环体fprintf(fp,”%d”,i);给fp指针打开的文件out.dat中写入数据3。判断i%3==0为真,执行fprintf(fp,”\n”),写入回车符。
(5)从文件 中读取一个数字赋值给变量n ,则变量n得到的值为123.
(6)关闭文件,输出变量n得到的值,即输出的结果为123.
20.答案选择:D
解析:
(1) fopen(“d2.dat”,”w”);打开的是一个文本文件,以写的方式打开该文件。
(2) fprintf(fp,“%d%d\n”,a[0],a[1],a[2]);将a[0],a[1]的值写到文件中,文件中的内容为:12换行,
18.答案选择:C
解析:fread函数的格式为:fread(buffer,size,count,fp);其中的buffer代表的是从文件中读取出来的数据存放的首地址。size 代表的是每一个数据所占有的字节数,count代表的是读入数据的个数。所以选择答案C。
19.答案选择:B
解析:
(1)fopen(“d1.dat”,”w”);打开的是一个文本文件,以写的方式打开该文件。
C语言练习题 (在图书馆可打印)
1. 以下不是C语言的特点的是()A. C语言简洁,紧凑B. 能够编制出功能复杂的程序C. C语言可以直接对硬件进行操作D. C语言移植性好2. 以下不正确的C语言标识符是()A. ABCB. abcC. a_bcD. ab.c3. 一个C程序的执行是从()A. main()函数开始。
直到main()函数结束B. 第一个函数开始, 直到最后一个函数结束C. 第一个语句开始。
直到最后一个语句结束D. .main( )函数开始,直到最后一个函数结束4. 在C程序中main() 的位置()A. 必须作为第一个函数B. 必须作为最后一个函数C. 可以任意D.必须放在它所调用的函数之后5. 一个C程序是由()A. 一个主程序和若干个子程序组成B. 一个或多个函数组成C. 若干过程组成D. 若干子程序组成是非题(对者打√,错者打×)1、C语言源程序的基本单位是函数()2、编辑程序的功能是建立并修改程序()3、C编译程序是一组机器语言指令()4、C语言源程序的语句分隔符是逗号()5、C语言源程序文件的扩展名是.obj()第二章数据类型、运算符与表达式选择题1. (设 int I; char c ;float f;)以下结果为整数的表达式的是()A. I+fB. i*cC. c+fD. I+c+f2. 设n=10,I=4,则赋值运算n%=I+1执行后,n的值是()A. 0B. 3C. 2D. 13.设 a=2,b=2; 则 ++a+b的结果是(),a 的结果是(),b的结果是()A. 2B. 3C. 4D. 54. 在C语言中,要求运算对象必须是整型的运算符是()A. /B. !C. %D. ==*4)设 int a=04, b; 则执行 b=a<<1 ;语句后,b的结果是()。
A.4B.04C. 8D.105. 属于非法转义字符的是()A. ‘\d’B.‘\0xf’C.‘\037’D.‘\f’*5)设有以下语句,则C的二进制值是()char a=3, b=6,c; c=a^b<<2;A. 00011011B. 00010100C. 00011100D. 000110006. sizeof(double)是一个()表达式()A. 整型B. 双精度C. 不合法D.函数调用7. 在C语言类型说明中,int ,char, short等类型的长度是()A. 固定的B. 由用户自己定义的C. 任意的D. 与机器字的长度有关的※8)如下程序执行的结果是()main(){int n=1; printf(“%d%d%d\n”, n, ++n, n--); } A.1 1 1 B. 1 2 2 C. 1 2 3 D. 1 2 1是非题(对者打T,错者打F)1、 C语言中,大写字母和小写字母被认为是两个不同的字符()2、 C语言规定,在程序中所用到的变量都必须在程序中定义()3、在C语言中“\n”代表两个字符()4、在一个字符变量中可以存放一个字符串()5、一个字符数据既可以以字符形式输出,也可以以整型形式输出()6、在C语言中,不能把一个字符串赋给一个字符变量()7、自增运算符(++)和自减运算符(--)可以用于常量或表达式()8、表达式10/3的结果是3.3()9、在C语言中,不同类型数据混合运算时,要先转换成同一类型后进行运算。
C语言文件练习题含答案(推荐文档)
第十二章文件基础训练一、填空题1、文件是指___________________________________________________________。
2、根据数据的组织形式,C中将文件分为______ASCII码文件________和___二进制文件___________两种类型。
3、现要求以读写方式,打开一个文本文件 stu1 ,写出语句:__FILE *fp fp=fopen(“stu.txt”,”r+”);_______________。
__________________________________。
4、现要求将上题中打开的文件关闭掉,写出语句:___fclose(fp);__________________。
5、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则打开文件方式字符串应该是___fopen(“a.txt”,”wb+”);__________。
二、选择题1、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是( ) 。
A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+")C) fopen("A:\user\abc.txt","rb") C) fopen("A:\\user\\abc.txt","w")2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。
A) 0 B) 1 C) -1 D) 一个非0值3、当已经存在一个file1.txt文件,执行函数fopen(“file1.txt”,”r+”)的功能是()。
A)打开file1.txt文件,清除原有的内容;B)打开file1.txt文件,只能写入新的内容;C)打开file1.txt文件,只能读取原有内容;D)打开file1.txt文件,可以读取和写入新的内容;4、 fread(buf , 64,2,fp)的功能是:( )A)从fp所指向的文件中,读出整数64,并存放在buf中;B)从fp所指向的文件中,读出整数64和2,并存放在buf中;C)从fp所指向的文件中,读出64个字节的字符,读两次,并存放在buf地址中;D)从fp所指向的文件中,读出64个字节的字符,并存放在buf中;5、以下程序的功能是( ) 。
C语言习题集(含答案)
一、单选题:(1)在C语言提供的合法的关键字是( )A)swicth B) cher C)Case D)default(2)在C语言中,合法的字符常量是()A)’\084’ B) ’\x43’C)’ab’D) "\0”(3)若有定义和语句:char s[10]: s="abcd”;printf(”%s\n",s);则结果是(以下u代表空格)()A)输出abcd B)输出aC)输出abcduuuuu D)编译不通过(4) 若有定义和语句:int **pp, *p,a=10, b=20;pp=&p;p=&a; p=&b; printf("%d,%d\n",*p,**pp);则输出结果是:()A)10,20 B)10,10 C)20,10 D)20,20(5)若有以下定义和语句:int u=010,v=0x10,w=10;printf("%d,%d,%d\n”,u, v, w);则输出结果是()A) 8,16,10B)10,10,10 C)8,8,10 D) 8,10,10 (6) 若有以下定义和语句char c1=' b', c2='e’;printf(”%d,%c\n", c2-c1,c2—'a’+”A");则输出结果是( )A)2,M B)3,EC)2,E ?D)输出项与对应的格式控制不一致,输出结果不确定(7)若有以下定义:char s[20]=”programming”,*ps=s;则不能代表字符o的表达式是( )A)ps+2 B) s[2]C) ps[2]D) ps+=2,*ps(8)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是() for (i=5; i; i—-)for(j=0;j<4; j++){。
}A) 20B) 25 C)24 D) 30(9)若有以下定义和语句:char *s1=”12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是()A)4B)5 C)9 D)10(10)若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是()A) *p B) a[10]C)*a D)a[p-a](11)下面程序的输出是()main(){char *s=”121";int k=0,a=0,b=0;do{k++;if(k%2==0) {a=a+s[k]—’0’;continue;}b=b+s[k]—’0';a=a+s[k]—'0';}while (s[k+1]);printf("k=%d a=%d b=%d\n",k,a,b);A) k=3 a=2 b=3 B) k=3 a=3 b=2C)k=2 a=3 b=2D) k=2 a=2 b=3(12) 下面程序的输出是( )main(){ unsigned a=32768;printf("a=%d\n”,a);}运行结果: —32768A)a=—32768 B)a=32767C)a=-32767 D)a=—1(13) 若有以下定义:float x; int a,b; 则正确的switch 语句是( )A)switch(x) B) switch(x){case1.0:printf("*\n”);{case1, 2:printf(”*\n”);case2。
C语言习题集(含答案).
一、单选题:(1) 在C语言提供的合法的关键字是()A)swicth B) cher C)Case D)default(2)在C语言中,合法的字符常量是()A)'\084' B) '\x43'C)'ab' D) "\0"(3)若有定义和语句:char s[10]: s="abcd"; printf("%s\n",s);则结果是(以下u代表空格)()A)输出abcd B)输出aC)输出abcduuuuu D)编译不通过(4) 若有定义和语句:int **pp, *p, a=10, b=20;pp=&p; p=&a; p=&b; printf("%d,%d\n",*p,**pp);则输出结果是:()A)10, 20 B)10,10 C)20,10 D)20,20(5)若有以下定义和语句:int u=010, v=0x10,w=10;printf("%d,%d,%d\n", u, v, w);则输出结果是( )A) 8,16,10B) 10,10,10 C)8, 8,10 D) 8,10,10(6) 若有以下定义和语句char c1=' b', c2='e';printf("%d,%c\n", c2-c1,c2-'a'+"A");则输出结果是( )A)2,M B)3,EC)2,E ?D)输出项与对应的格式控制不一致,输出结果不确定(7) 若有以下定义:char s[20]="programming",*ps=s;则不能代表字符o的表达式是( )A) ps+2 B) s[2] C) ps[2] D) ps+=2,*ps(8) 若i, j已定义为int类型,则以下程序段中内循环体的总的执行次数是( )for (i=5; i; i--)for(j=0; j<4; j++) {...}A) 20B) 25 C) 24 D) 30(9)若有以下定义和语句:char *s1="12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是( )A) 4B) 5 C) 9 D) 10(10)若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是( )A) *p B) a[10]C)*a D) a[p-a](11)下面程序的输出是( )main( ){ char *s="121";int k=0, a=0, b=0;do{k++;if(k%2==0) {a=a+s[k]-'0';continue;}b=b+s[k]-'0'; a=a+s[k]-'0';}while (s[k+1]);printf("k=%d a=%d b=%d\n",k,a,b);A) k=3 a=2 b=3 B) k=3 a=3 b=2C) k=2 a=3 b=2D) k=2 a=2 b=3(12) 下面程序的输出是( )main( ){ unsigned a=32768;printf("a=%d\n", a);} 运行结果:-32768A)a=-32768 B)a=32767C)a=-32767 D)a=-1(13) 若有以下定义:float x; int a,b; 则正确的switch 语句是( )A)switch(x) B) switch(x){ case1.0: printf("*\n"); { case1, 2: printf("*\n");case2.0: printf("**\n"); case3: printf("**\n");} }C) switch (a+b)D) switch (a+b);{ case 1: printf("\n"); { case 1: printf("*\n");case 1+2: printf("**\n"); case 2: printf("**\n");} }(14) 以下程序输出的结果是( )main( ){ char w[ ][10]={"ABCD","EFGH","IJKL","MNOP"}, k;for (k=1;k<3;k++)printf("%s\n",&w[k][k]);}A) ABCD B) ABCDFGH EFGKL IJMC) EFG D) FGHJK KLO(15)若数组名作实参而指针变量作形参,函数调用实参传给形参的是( )A.数组的长度B.数组第一个元素的值C.数组所有元素的值D.数组第一个元素的地址(16) 若变量已正确定义并赋值,下面符合C语言语法的表达式是( )A) a:=b+1 B) a=b=c+2C) int 18.5%3 D) a=a+7=c+b(17) C语言中运算对象必须是整型的运算符是( )A) %=B) / C) = D) 〈=(18) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是( )A) 1 B) 2 C) 2.0 D) 2.5(19) 若变量a、i已正确定义,且i已正确赋值,合法的语句是( )A) a==1 B) ++i; C) a=a++=5; D) a=int(i);(20) 若有以下程序段,int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是( )A) 0 B) 0.5 C) 1 D) 2(21) 有如下程序main( ){ int y=3,x=3,z=1;printf(“%d %d\n”,(++x,y++),z+2);}运行该程序的输出结果是( )A) 3 4 B) 4 2 C) 4 3 D) 3 3(22) 能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是( )A) a>=10 or a<=0 B) a>=0|a<=10C) a>=10 &&a<=0 D) a>=10 || a<=0main( ){ int x=1, a=0, b=0;switch(x){ case 0: b++;case 1: a++;case 2: a++; b++; }printf(“a=%d,b=%d\n”,a,b); }该程序的输出结果是( )A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2(24) 有如下程序main( ){ float x=2.0, y;if(x<0.0) y=0.0;else if(x<10.0) y=1.0/x;else y=1.0;printf(“%f\n”,y); }该程序的输出结果是( )A) 0.000000 B) 0.250000 C) 0.500000D) 1.000000(26) 有如下程序main( ){ int i, sum;for(i=1;i<=3;sum++) sum+=i;printf(“%d\n”,sum);}该程序的执行结果是( )A) 6 B) 3 C) 死循环D) 0main ( ){ int x=23;do{ printf(“%d”,x--);} while(!x); }该程序的执行结果是( )A) 321 B) 23C) 不输出任何内容D) 陷入死循环(28) 有如下程序main( ){ int n=9;while(n>6) {n--; printf(“%d”,n); } }该程序段的输出结果是( )A) 987 B) 876C) 8765 D) 9876(29) 设有说明语句:char a=’\72’;则变量a( )A) 包含1个字符B) 包含2个字符C) 包含3个字符D) 说明不合法(30) 有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是( )A) 3 B) 4 C) 5 D) 有语法错(31) 有如下程序int func(int a,int b){ return(a+b); }main( ){ int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%\d\n”,r); }该程序的输出的结果是( )A) 12 B) 13 C) 14 D) 15int *p, a=10,b=1;p=&a; a=*p+b;执行该程序段后,a的值为( )A) 12 B) 11 C) 10 D) 编译出错(33) 对于基类型相同的两个指针变量之间,不能进行的运算是( )A) < B) = C) + D) -(34) 有如下程序long fib(int n){ if (n>2) return(fib(n-1)+fib(n-2));else return(2);}main( ){ printf(“%d\n”, fib(3)); }该程序的输出结果是( )A) 2 B) 4 C) 6 D) 8(35) 在C语言中,函数的隐含存储类别是( )A) auto B) static C) extern D) 无存储类别(36) 有如下程序#define N 2#define M N+1#define NUM 2*M+1main( ){ int i;for(i=1;i<=NUM;i++) printf(“%d\n”,i);}该程序中的for循环执行的次数是( )A) 5 B) 6C) 7 D) 8char fun(char *p){ return p; }该函数的返回值是( )A) 无确切的值B) 形参p中存放的地址值B) 一个临时存储单元的地址D) 形参p自身的地址值(38) 有如下程序段int a=14,b=15,x;char c=’A’;x=(a&&b)&&(c<’B’);执行该程序段后,x的值为( )A) true B) false C) 0 D) 1(39) 有如下说明int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;则数值为9的表达式是( )A) *p+9 B) *(p+8) C) *p+=9 D) p+8(40) 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是( )A) &t[3][2] B) t[3] C) t[1] D) t[2](41) 有如下程序main( ){ char ch[2][5]={“6937”,”8254”}, *p[2];int i,j,s=0;for(i=0;i<2;i++) p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>’\0’; j+=2)s=10*s+p[i][j]-‘0’;printf(“%d\n”,s); }该程序的输出结果是( )A) 69825 B) 63825 C) 6385 D) 693825(42)若有以下的定义:int a[ ]={1,2,3,4,5,6,7,88,9,10}, *p=a;则值为3的表式是( )A) p+=2, *(p++) B) p+=2,*++pC) p+=3, *p++ D) p+=2,++*p(43)假定所有变量均已正确说明,下列程序段运行后x的值是( )a=b=c=0; x=35;if (!a) x--;else if(b) ; if(c) x=3; else x=4;A)34 B)4 C)35 D)3(44)在以下一组运算符中,优先级最高的运算符是( )A)<= B)= C)%D)&&(45)若有以下定义和语句:int w[2][3], (*pw)[3]; pw=w;则对w数组元素非法引用是( )A)*(w[0]+2) =*w[0][2]B)*(pw+1)[2]C)pw[0][0] =*w[0][0]D)*(pw[1]+2) =*w[1][2](46)若有以下程序片段:char str[ ]="ab\n\012\\\"";printf("%d\n", strlen(str));上面程序片段的输出结果是( )A)3 B)4 C)6D)12(47)函数调用strcat(strcpy(str1,str2),str3)的功能是( )A)将串str1复制到串str2中后再连接到串str3之后B)将串str1连接到串str2之后再复制到串str3之后C)将串str2复制到串str1中后再将串str3连接到串str1之后D)将串str2连接到串str1之后再将串str1复制到串str3中(48)以下对C语言函数的有关描述中,正确的是( )A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B) C函数既可以嵌套定义又可以递归调用解释:C函数可以递归调用,但不允许嵌套定义C) 函数必须有返回值,否则不能使用函数D) C程序中有调用关系的所有函数必须放在同一个源程序文件中(49) 以下叙述中不正确的是( )A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值.B) 在C中,调用函数时,实在参数和对应形参在类型上只需赋值兼容.C) 在C中, 外部变量的隐含类别是自动存储类别.D)在C中, 函数形参可以说明为register变量.(50) 以下程序的输出结果是( )#define sub1(char a, char b) {char c; c=a;a=b;b=c;}#define sub2(char *a, char b) {char c; c=*a;*a=b;b=c;}#define sub3(char *a, char *b) {char c; c=*a;*a=*b;*b=c;}main( ){ char a,b;a='A';b='B';sub3(&a,&b);putchar(a); putchar(b);a='A';b='B';sub2(&a,b);putchar(a); putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBAB B) ABBBBAC) BABABA D) BAABBA(51)错误的转义字符是( )A) '\091'B) '\\' C) '\0' D) '\''(52)设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a, b 和c的值分别是( )A) 2, 1, 2 B) 2, 0, 3 C) 2, 2, 3 D) 2, 1, 3(53) 在C语言中,错误的常数是( )A) 1E+0.0B) 5 C) 0xaf D) 0L( 54) 设int k; 则语句for(k=0; k=1; k++);和语句for(k=0; k==1;k++);执行的次数分别是( )A) 无限和0B) 0和无限C) 都是无限D) 都是0(55)某文件中定义的静态全局变量(或称静态外部变量)其作用域是( )A) 只限某个函数B) 本文件C) 跨文件D)不限制作用域二、程序填空题:(10) 函数pi的功能是根据以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)现在请你在下面的函数中填空,完成求π的功能。
C语言程序设计习题(含答案)
C语言程序设计习题(含答案) C语言程序设计习题(含答案)C语言是一种常用的编程语言,被广泛应用于计算机科学和软件开发领域。
为了帮助学习者更好地掌握C语言的编程技巧,本文提供一些常见的C语言程序设计习题及其答案。
通过完成这些习题,学习者可以锻炼编程思维,加深对C语言的理解,并提高编程能力。
习题一:求两个整数的和题目描述:编写一个程序,计算两个整数的和并输出结果。
解答:```C#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```习题二:计算圆的周长和面积题目描述:编写一个程序,根据用户输入的半径,计算圆的周长和面积,并输出结果。
解答:```C#include <stdio.h>#define PI 3.14159int main() {double radius, circumference, area;printf("请输入圆的半径:");scanf("%lf", &radius);circumference = 2 * PI * radius;area = PI * radius * radius;printf("圆的周长为:%lf\n", circumference);printf("圆的面积为:%lf\n", area);return 0;}```习题三:判断一个数是否为素数题目描述:编写一个程序,判断用户输入的一个正整数是否为素数。
解答:```C#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i * i <= num; i++) {if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个正整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}```习题四:计算两个矩阵的乘积题目描述:编写一个程序,计算两个3x3的矩阵的乘积并输出结果。
习题8
习题8和参考解答1)选择题(1)在C语言中对文件操作的一般步骤是()。
A.打开文件,操作文件,关闭文件B.操作文件,修改文件,关闭文件C.读/写文件,打开文件,关闭文件D.读文件,写文件,关闭文件【答案】A【解析】C语言中,对文件的操作遵循打开、操作、关闭的步骤。
(2)下列叙述错误的是()。
A.C语言中对二进制文件的访问速度比文本文件快B.C语言的随机文件以二进制代码形式存储数据C.语句“FILE * fp;”定义了一个名为fp的文件指针D.C语言中的文本文件以ASCII码形式存储数据【答案】A【解析】访问速度是相对而言的,不是绝对的。
(3)下列叙述正确的是()。
A.文件由一系列数据一次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,只能是文本文件【答案】C【解析】文件是由数据序列组成的,可以构成二进制文件也可以构成文本文件。
(4)在进行文件操作时,写文件的一般含义是()。
A.将计算机内存中的信息存入磁盘B.将磁盘中的信息存入计算机内存C.将计算机CPU中的信息存入磁盘D.将磁盘中的信息存入计算机CPU【答案】A【解析】文件的读/写操作是相对于计算机内存而言的。
(5)语句“fwrite(ptr,8L,10,fp);”的功能是()。
A.从fp指向的文件中读取8×10个字节的数据块存放到ptr 指向的内存区域中B.从ptr指向的内存区域中读取8×10个字节的数据块写到fp 指向的文件中C.从fp指向的文件中读取8×10个字节的数据块写到ptr指向的内存区域中D.从ptr指向的内存区域中读取8×10个字节的数据块显示在屏幕上【答案】B【解析】本题主要考查fwrite()函数的定义。
(6)利用fclose(fp)函数正常关闭fp指向的文件后,函数fclose()的返回值是()。
计算机c语言习题(含答案)
1. 有如下程序main(){ int n[5]={0,0,0},i,k=2;for(i=0;i < k;i++) n[i]=n[i]+1;printf("%d\n",n[k]);}该程序的输出结果是 DA、不确定的值B、2C、1D、02. 执行下面的程序后,a的值为__B___main(){ int a,b;for (a=1,b=1;a < 100;a++){if (b > =20) break;if (b%3==1){ b+=3; continue; }b-=5;}}A、7B、8C、9D、103. 下述程序的输出结果是( B )。
#includemain(){int k=0,m=0;int i,j;for(i_O;i<2;i++){for(j:0;j<3;j++)k++:k一=j;}m=i+j;printf(”k=%d,m=%d”,k,m);}A、k=0,m=3B、k=O,m=5C、D)k=l,m=3D、D)k=l,m=54. 以下程序段____C__x=-1;do{x=x*x;}while(!x);A、是死循环B、循环执行二次C、循环执行一次D、有语法错误5. 有如下程序 Bmain(){ int n=9;while(n > 6) {n--;printf("%d",n);}}该程序段的输出结果是A、987B、876C、8765D、98766. 有以下程序main(){ int i, j;for(j=10;j < 11;j++){ for(i=9;i < j; i++)if (!(j%i))break;if(i=j-1)printf("%d",j);}}输出结果是 BA、11B、10C、9D、10 117. 以下程序的输出结果是 Amain( ){ int i;for(i=1;i < 6;i++){ if(i%2){printf("#");continue;}printf("*");}printf("\n");A、#*#*#B、#####C、*****D、*#*#*8. 以下叙述正确的是( D )A、do-while语句构成的循环不能用其它语句构成的循环来代替B、do-while语句构成的循环只能用break语句退出C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。
C语言 文件练习题
C语言文件练习题c语言文件练习题c语言文件练习题1.系统的标准输出文件就是指_________.a)键盘b)显示器c)软盘d)硬盘2.若执行fopen函数时发生错误,则函数的返回值是______.a)地址值b)0c)1d)eof3.若要用fopen函数关上一个代莱二进制文件,该文件必须既读也能够写下,则文件方式字符串应当就是______.a)\4.fscanf函数的正确调用形式是______.a)fscanf(fp,格式字符串,输出表列)b)fscanf(格式字符串,输出表列,fp);c)fscanf(格式字符串,文件指针,输出表列于);d)fscanf(文件指针,格式字符串,输出所列);5.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是____.a)只写b)追加c)读或读写d)答案b和c都正确6.函数调用语句:fseek(fp,-20l,2);的含义是_______.a)将文件位置指针移到距离文件头20个字节处b)将文件位置指针从当前位置向后移动20个字节c)将文件位置指针从文件末尾处后退20个字节d)将文件位置指针移到离当前位置20个字节处7.利用fseek函数可实现的操作_______.a)fseek(文件类型指针,起始点,位移量);b)fseek(fp,位移量,起始点);c)fseek(位移量,起始点,fp);d)fseek(初始点,加速度量,文件类型指针);8.在执行fopen函数时,ferror函数的初值是______.a)tureb)-1c)1d)09.fseek函数的恰当调用形式就是_________a)fseek(文件指针,起始点,位移量)b)fseek(文件指针,位移量,起始点)c)fseek(位移量,起始点,文件指针)d)fseek(起始点,位移量,文件指针)10.若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是______a)eofb)-1c)1d)null11.下列关于c语言数据文件的叙述中正确的是________a)文件由ascii码字符序列共同组成,c语言就可以读取文本文件b)文件由二进制数据序列共同组成,c语言就可以读取二进制文件c)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件d)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件12.函数fseek(pf,ol,seek_end)中的seek_end代表的起始点是________a)文件已经开始b)文件末尾c)文件当前边线d)以上都不对13.c语言中,能够辨识处置的文件为_______a)文本文件和数据块文件b)文本文件和二进制文件c)流文件和文本文件d)数据文件和二进制文件14.若调用fputc函数输入字符顺利,则其返回值就是________a)eofb)1c)0d)输出的字符15未知函数的调用形式:fread(buf,size,count,fp),参数buf的含义就是______a)一个整型变量,代表要读入的数据项总数b)一个文件指针,指向要读的文件c)一个指针,指向必须初始化数据的放置地址d)一个存储区,放置爱读的数据项16当顺利执行了文件关闭操作时,fclose函数的返回值是_________a)-1b)truec)0d)117.如果需要打开一个已经存在的非空文件“demo”进行修改下面正确的选项是______a)fp=fopen(\b)fp=fopen(\c)fp=fopen(\d)fp=fopen(\18.关于文件认知不恰当的为_________.a)c语言把文件看作是字节的序列,即由一个个字节的数据顺序组成;b)所谓文件一般指存储在外部介质上数据的集合;c)系统自动地在内存区为每一个正在采用的文件开拓一个缓冲区;d)每个打开文件都和文件结构体变量相关联,程序通过该变量访问该文件;19.关于二进制文件和文本文件描述正确的为_________.a)文本文件把每一个字节放成一个ascii代码的形式,就可以放置字符或字符串数据;b)二进制文件把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放;c)二进制文件可以节省外存空间和切换时间,无法放置字符形式的数据;d)通常中间结果数据须要暂时留存在外存上,以后又须要输出内存的,常用文本文件留存;20.系统的标准输入文件操作的数据流向为_________.a)从键盘至内存b)从显示器至磁盘文件c)从硬盘至内存d)从内存至u盘21.利用fopen(fname,mode)函数同时实现的操作方式不恰当的为_________.a)正常返回被打开文件的文件指针,若执行fopen函数时发生错误则函数的返回null;b)若打听没由pname选定的适当文件,则按选定的名字创建一个崭新文件;c)若打听没由pname选定的适当文件,且mode规定按读方式关上文件则产生错误;d)为pname指定的相应文件开辟一个缓冲区,调用操作系统提供的打开或建立新文件功能;22.利用fwrite(buffer,sizeof(student),3,fp)函数叙述不恰当的_________.a)将3个学生的数据块按二进制形式写入文件;b)将由buffer选定的数据缓冲区内的3*sizeof(student)个字节的数据载入选定文件;c)返回实际输出数据块的个数,若返回0值表示输出结束或发生了错误;d)若由fp指定的文件不存在,则返回0值;23.利用fread(buffer,size,count,fp)函数可实现的操作方式_________.a)从fp指向的文件中,将count个字节的数据读到由buffer指出的数据区中;b)从fp指向的文件中,将size*count个字节的数据读到由buffer指出的数据区中;c)以二进制形式加载文件中的数据,返回值就是实际从文件读取数据块的个数count;d)若文件操作出现异常,则返回实际从文件读取数据块的个数;24.检查由fp指定的文件在读写时是否出错的函数是_________.a)feof()b)ferror()c)clearerr(fp)d)ferror(fp)25.函数调用语句:fseek(fp,-10l,2);的含义就是________。
习题7 文件
b.从文件f中读取长度为n的字符串存入指针s所指的内存
c.从文件f中读取n个字符串存入指针s所指的内存
d.从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
14、命令行参数是指在操作系统状态下执行命令程序时允许带的参数。
对
错
15为了提高读写效率,我们进行读写操作后不应关闭文件以便下次再进行读写。
对
错
16、系统的标准输入文件是指_______。
a.键盘
b.显示器
c.软盘
d.硬盘
对
错
10、fseek函数中的第二个参数代表的位移量是相对于的文件的开始来说的。
对
错
11、fgetc函数的作用是从文件读入一个字符,该文件的打开方式必须是_______。
a.只写
b.追加
c.答案B和C都正确
d.读或读写
12、C语言中的文件是一种流式文件,读写时均以字符为单位。
对
错
13、标准库函数fgets(s,n,f)的功能是_______。
对
错
4、在c语言中将文件视为无结构的字节流。
对
错
5、若执行fopen函数时发生错误,则函数的返回值是_______。
a. 1
b. 0
c.地址值
d. EOF
6、c语言通过文件指针对它所指向的文件进行操作。
对
错
7、
rewind函数的作用是位置指针返回移动前的位置。
对
错
8、文件正常关闭时返回1。
对
错
9、由于在c语言中将文件视为无结构的字节流,所以不能对文件进行二进制读写。
1、利用fseek函数可实现的操作是_______。
C语言习题及解答
C 语言习题及解答1、输入一个华氏温度,要求输出摄氏温度。
公式为#include <stdio 。
h> void main ( ) {float C ,F;printf(”Input F :"); scanf ("%f”,&F ); C=5.0/9*(F-32); printf ("C=%.2f\n”,C);}2、编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。
(提示:同一个字母的大写比小写小32)#include 〈stdio 。
h 〉 void main ( ) { char ch ;printf("Input ch:”); scanf("%c”,&ch); ch=ch+32;printf (“ch=%c\n",ch);}3、编写程序,输入梯形的上底、下底和高,计算并输出梯形的面积。
#include <stdio 。
h 〉void main ( ) { float a ,b,h ,area;printf (”Input a ,b ,h : ”); scanf(”%f%f%f", &a ,&b ,&h ); area=(a+b )*h/2;printf (”area=%.2f\n", area );}4、编写程序,输入圆半径r ,求圆周长、圆面积、圆球表面积、圆球体积. #include 〈stdio.h>#define PI 3.1415926 void main( ){float r,L ,s1,s2,V;printf (”Input r :"); scanf(”%f”, &r ); L=2*PI *r ; s1=PI*r*r ; s2=4*PI *r *r; V=4。
0/3*PI *r *r *r ;printf (”L=%.2f , s1=%.2f, s2=%。
C语言各章节练习题(含答案)
C语言各章节练习题(含答案)一、c语言概述练习题选择1.一个c程序的执行是从。
a)本程序的main函数开始,到main函数结束b)本程序文件的第一个函数已经开始,至本程序文件的最后一个函数完结c)本程序文件的第一个函数已经开始,至本程序main函数完结d)本程序的main函数已经开始,至本程序文件的最后一个函数完结2.以下描述不恰当的就是。
a)一个c源程序必须包含一个main函数b)一个c源程序可由一个或多个函数组成c)c程序的基本组成单位是函数d)在c程序中,注释说明只能位于一条语句的后面3.以下描述恰当的就是。
a)在对一个c程序进行编译的过程中,可发现注释中的拼写错误b)在c程序中,main 函数必须位于程序的最前面c)c语言本身没输入输出语句d)c程序的每行中就可以写下一条语句4.一个c语言程序就是由。
a)一个主程序和若干个子程序组成b)函数组成c)若干过程组成d)若干子程序组成二、数据类型、运算符与表达式选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。
x=(i=4,j=16,k=32)a)4b)16c)32d)522.下列四组选项中,均不是c语言关键字的选项是。
a)defineiftypeb)getccharprintfc)includecasescanfd)whilegopow3.以下四组选项中,均就是不合法的用户标识符的选项就是。
(c语言标识符由字母,数字,下划线共同组成,结尾无法就是数字)a)wp_0dob)b-agotointc)floatla0_ad)-123abctemp8.未知字母a的ascii码点为十进制数65,且c2为字符型,则继续执行语句c2=‘a’+‘6’-‘3’后,c2中的值。
a)db)68c)不确定的值d)c填空题1.若存有以下定义,则排序表达式y+=y-=m*=y后的y值就是【1】。
-16intm=5,y=2;7.若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为【8】,n的值为【9】。
C语言文件试题及答案
C语言:文件1的习题解答1.系统的标准数入文件是指__A_______.(正确)a)键盘b)显示器c)软盘d)硬盘2.若执行fopen函数时发生错误,则函数的返回值是___B___.(正确)a)地址值b)0 c)1 d)EOF3。
若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是__B____.(正确)a)"ab+" b)”wb+" c)"rb+” d)"ab”4.fscanf函数的正确调用形式是______D___。
(正确,这是格式化写入文件的函数,不必死记硬背)a)fscanf(fp,格式字符串,输出表列)b)fscanf(格式字符串,输出表列,fp);c)fscanf(格式字符串,文件指针,输出表列);d)fscanf(文件指针,格式字符串,输入表列);5.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是_C___.(正确)a)只写b)追加c)读或读写d)答案b和c都正确6.函数调用语句:fseek(fp,—20L,2);的含义是__C_____。
(正确答案是C。
这个函数改变文件位置指针,可实现随机读写,其中第二个参数表示以起始点为基准移动的字节数,正数表示向前移动,负数表示向后退。
第三个参数表示位移量的起始点,0:文件开始;1:文件当前位置;2:文件末尾,)a)将文件位置指针移到距离文件头20个字节处b)将文件位置指针从当前位置向后移动20个字节c)将文件位置指针从文件末尾处后退20个字节d)将文件位置指针移到离当前位置20个字节处7.利用fseek函数可实现的操作_____A____.(正确)a)fseek(文件类型指针,起始点,位移量);b)fseek(fp,位移量,起始点);c)fseek(位移量,起始点,fp);d)fseek(起始点,位移量,文件类型指针);8.在执行fopen函数时,ferror函数的初值是_D______.(正确)a)TURE b)-1 c)1 d)0c语言文件指针名=fopen(文件名,使用文件方式)函数参数说明格式:文件指针名=fopen(文件名,使用文件方式)参数:文件名意义”C:\\TC\\qwe。
C语言经典练习题50道(附答案)
1.**打印Hello World**练习:编写一个C程序,打印"Hello,World!"到屏幕上。
#include<stdio.h>int main(){printf("Hello,World!\n");return0;}2.**计算两个整数的和**练习:编写一个程序,接受两个整数,然后计算它们的和并打印结果。
#include<stdio.h>int main(){int a=5,b=7;int sum=a+b;printf("Sum:%d\n",sum);return0;}3.**判断奇数或偶数**练习:编写一个程序,接受一个整数,然后判断它是否为奇数或偶数。
#include<stdio.h>int main(){int num=10;if(num%2==0){printf("%d is even.\n",num);}else{printf("%d is odd.\n",num);}return0;}4.**计算阶乘**练习:编写一个程序,计算给定整数的阶乘。
#include<stdio.h>int main(){int n=5;int factorial=1;for(int i=1;i<=n;i++){factorial*=i;}printf("Factorial of%d is%d\n",n,factorial);return0;}5.**反转字符串**练习:编写一个程序,接受一个字符串,然后反转它并打印出来。
#include<stdio.h>#include<string.h>int main(){char str[]="Hello,World!";int len=strlen(str);for(int i=len-1;i>=0;i--){printf("%c",str[i]);}printf("\n");return0;}6.**检查素数**练习:编写一个程序,判断一个整数是否为素数。
C语言练习题(带详解答案)
一、编程题1.输入2个整数,求两数的平方和并输出。
#include<stdio.h>intmain(void){intta,b,s;printf("pleaseinputa,b:\n");scanf("%d%d”,&a,&b);s=a*a+b*b;printf("theresultis%d\n",s);return0;}2.输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。
#include<stdio.h>#definePI3.14intmain(void){doubler,area,girth;printf("pleaseinputr:\n");scanf("%lf",&r);if(r>=0){area=PI*r*r;girth=2*PI*r;printf("theareais%.2f\n",area);printf("thegirthis%.2f\n",girth);}elseprintf("Inputerror!\n");return0;}3、已知函数y=f(x),编程实现输入一个x值,输出y值。
2x+1(x<0)y=0(x=0)2x-1(x>0)#include<stdio.h>voidmain(){intx,y;scanf(“%d”,&x);if(x<0)y=2*x+1;elseif(x>0)y=2*x-1;elsey=0;printf(“%d”,y);}4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥,90等级为A;80≤score<9,0等级为B;70≤score<8,0等级为C;60≤score<7,0等级为D;score<60,等级为E。
c语言第10章文件练习题
fclose(f1); fclose(f2);} 5. 以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此
文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。 #include<stdio.h> main( ) {
FILE *fp; char ch,fname[32]; int count=0; printf("Inputthefilename:"); scanf("%s",fname); if((fp=fopen(【1】,"w+"))==NULL) {printf("Can'topenfile:%s\n",fname); exit(0);} printf("Enterdata:\n"); while((ch=getchar())!="#") { fputc(ch,fp); count++;} fprintf(【2】 ,"\n%d\n", count); fclose(fp); } 6. 以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字 母,输出到文件 test.txt中,然后从该文件读出字符串并显示出来。请填空。 #include<stdio.h> main() {
第 10章 文件练习题
一、 选择题
1. 对 C语言的文件存取方式中,文件()。
A.只能顺序存取
B.只能随机存取(也称直接存取)
C.可以是顺序存取,也可以是随机存取
D.只能从文件的开头存取
2. C语言可以处理的文件类型是()。
A.文本文件和数据文件
B.文本文件和二进制文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ch = fgetc(fp); fp为已经打开的文件的指针 函数功能: 从指定的文件中读取一个字符。即: 从fp所指向的文件(该文件必须是以读或读写方式 打开的)中读取一个字符返回,读取的字符赋给变 量ch。 若读取字符时文件已经结束或出错: 对于ASCII文件,文件结束时,返回文件结束 标记EOF(-1); 对于二进制文件,要使用feof函数来判断文件 是否结束。
例:fp = fopen ("file1", "r")) 按指定的文件使用方式打开指定的文件。 若文件打开成功,则返回值为非NULL指针; 若文件打开失败,返回NULL。
20
11.2 文件处理
文本文件的三种基本打开方式
“r”:只读方式。为读(输入)文本文件打开文 件。若文件不存在,则返回NULL。 “w”:只写方式。为写(输出)文本文件打开 文件。若文件不存在,则建立一个新文件; 若文件已存在,则要将原来的文件清空。 “a”:追加方式。在文本文件的末尾增加数 据。若文件已存在,则保持原来文件的内容, 将新的数据增加到原来数据的后面;若文件 不存在,则创建。
17
类型说明语句typedef: 定义新的类型来代替已有 类型:typedef int INT
11.2 文件处理
二.如何引用文件结构——文件指针
C语言中对文件的操作都要通过指向该 文件结构的指针。 文件指针变量说明形式: FILE * 文件型指针变量名; 例如: FILE * fp; /* fp 是一个指针变量 */
7
从文件数据的组织形式(存储格式)看
ASCII文件(或称文本文件,即TEXT文件)
文本文件中的数据采用ASCII码格式存储, 全部数据转换为ASCII码。每个ASCII字符占1 个字节。ASCII文件使用文本编辑器可直接阅读。
二进制文件
对数据在内存中的二进制存储格式不做任何 转换,直接存入文件,形成二进制文件。二进 制文件在操作系统下不能直接阅读。
28
11.3 文件顺序读写
一.文件顺序操作
对文件的操作(文件读写)必须按文件中字符的 先后顺序进行,只能在操作了第i个字符之后,才 能操作第i+1个字符。 在对文件操作时,文件的位置指针由系统自 动向前(文件尾方向)移动。
29
11.3 文件顺序读写
进行顺序操作的函数:
字符输入输出函数 字符串输入输出函数 格式化输入输出函数 数据块输入输出函数 fgetc fgets fscanf fread fputc fputs fprintf fwrite
在83年以后ANSI C标准中取消了非缓冲文件系 统,对文本文件和二进制文件均统一采用缓冲文 件系统进行处理。
本课程学习:
缓冲式文件操作方式下,对磁盘文件进行基本 操作。对文本文件和二进制文件有不同的处理方 式。使用标准输入/输出库(stdio.h)函数来实现文 件操作。
14
第十一章 文件
文件概述 文件处理 文件顺序读写 文件随机操作 文件检测 文件实例
12Biblioteka 11.1 文件概述 从C语言对文件的处理方法看
缓冲文件系统 非缓冲文件系统 缓冲文件系统:对每个正在使用的文件, 系统自动在内存中为其开辟一个文件缓冲区。 称为高级文件操作。 非缓冲文件系统:系统不会自动开辟缓冲 区,文件缓冲区是由程序自己设置的。称为 低级文件操作。
13
11.1 文件概述
10
11.1 文件概述
从用户观点看
普通文件(也称为磁盘文件) 特殊文件(也称为标准设备文件或标准I/O文 件) 普通文件是以磁盘为对象且无其它特殊性 能的文件。 特殊文件是以终端为对象的标准的设备文 件。
11
11.1 文件概述
在C语言中,“文件”的概念具有更广泛的意 义。与每台主机相连的所有输入输出设备都看作 是一个文件。即将实际的物理设备抽象为逻辑文 件,它们也被称为设备文件。 例如: 键盘是输入文件 stdin(标准输入文件) 显示器是输出文件 stdout(标准输出文件) 打印机是输出文件 PRN
25
关闭文件(fclose)
fclose函数的调用形式: FILE * fp; ….. fclose ( fp ); fp:已经打开的文件指针。 函数功能
关闭fp指定的文件,切断缓冲区与该文件的联系, 并释放文件指针。 若文件关闭成功,返回值为0; 若文件关闭失败,返回非0值。
26
11.2 文件处理
系统标准设备文件
标准设备文件由系统自动打开和关闭,其 文件结构的指针由系统命名,用户在程序中 可直接使用。 C语言中提供了三个标准设备文件的指针:
stdin
标准输入文件(键盘)
stdout
stderr
标准输出文件(显示器)
标准错误输出文件(显示器)
27
第十一章 文件
文件概述 文件处理 文件顺序读写 文件随机操作 文件检测 文件实例
5
三.系统对文件的处理过程
系统对文件的处理过程就是对文件进行输入 /输出操作的过程。 写文件称为输出
输出文件缓冲区
程序 数据区
输入文件缓冲区 计算机内存
文件
计算机外存
读文件称为输入
6
11.1 文件概述
四.文件的分类
文本文件
二进制文件 缓冲文件系统
普通文件(磁盘文件)
特殊文件(标准设备文件)
非缓冲文件系统
8
11.1 文件概述
例如:将整数1024分别存储到ASCII文件和二进 制文件中,将采用不同的编码形式,占用不同的 字节长度。
内存中的存储形式: 补码 0000 0100 0000 0000
ASCII文件:ASCII码
’1’
’0’
’2’
’4’
占4个字节
二进制文件:补码 0000 0100 0000 0000 占2个字节
掌握本章内容的捷径:
1. 对文件永远是:打开——操作——关闭 2. 学会文件操作库函数(即标准I/O库函数) 的用法
2
第十一章 文件
文件概述 文件处理 文件顺序读写 文件随机操作 文件检测 文件实例
3
11.1 文件概述
一.文件的定义
存储在外部介质上(如磁盘和磁带等 外存储器)的数据或信息的集合。
例如:程序文件中保存着程序,而数据文件 中保存着数据。 main.c C语言源程序 文本文件 main.obj 目标文件 二进制文件 main.exe 可执行文件 二进制文件
4
11.1 文件概述
二.文件的性质
文件是一个有序的数据序列,数据之 间有着严格的排列次序关系,可以按照 它们的排列顺序,依次进行访问,也可 以按照需要,访问任意位置上的数据。
32
11.3 文件顺序读写
输出函数:
fputc( ch, fp );
函数功能:
ch为需要输出的字符
将一个字符输出到指定文件中。即将字符变 量ch中的字符输出到fp所指向的文件。
若输出操作成功,该函数返回输出的字符; 否则,返回EOF。
33
例:显示一个文本文件的内容
#include <stdio.h> int main ( ) { FILE * fp; char filename[20], ch; printf ("Enter filename:"); scanf("%s",filename); /* 输入文件名 */ if ((fp=fopen(filename, "r"))==NULL) /* 打开 */ { printf(“file open error.\n”); /* 出错处理 */ exit (0); } while ( ( ch = fgetc(fp) )!=EOF) /* 读字符 */ putchar(ch); fclose (fp); /* 关闭文件 */ }
30
scanf getchar gets...
键盘文件 内存
磁盘文件
fscanf fgetc fgets fread...
printf putchar 显示器文件 puts...
fprintf 磁盘文件 fputc fputs fwrite...
31
二.字符输入输出( fgetc / fputc )
22
11.2 文件处理
常见文件打开操作
if ((fp = fopen ("filename", "r")) == NULL ) { printf ("Cannot open file.\n"); exit (0); /*打开文件出错,调用库函数终止程序*/ } 含义:以只读方式打开文件名为filename的文件。 文件名可以是从盘符开始的完整路径名,也可 以是相对路径。
16
文件结构类型FILE: typedef struct { int _fd; /*文件位置指针,即当前文件的读写位置*/ int _cleft; /* 文件缓冲区中剩余的字节数 */ int _mode; /* 文件操作模式 */ char * nextc; /*用于文件读写的下一个字符位置*/ char * _buff; /* 文件缓冲区位置(指针) */ } FILE ; 文件结构变量在打开文件时由操作系统自动建立, 用户使用文件时无需重复定义。 在使用文件的时候要使用文件包含命令: #include <stdio.h>
23
11.2 文件处理
练习:以下可作为函数fopen中第一个 参数的正确格式是: A. c:user\text.txt B. c:\user\text.txt C. "c:\user\text.txt" D. "c:\\user\\text.txt"