C语言标准库函数""fgets(string,n,fp)""的功能是()。

题目
单选题
C语言标准库函数""fgets(string,n,fp)""的功能是()。
A

从文件fp中读取长度为n的字符串存入指针string指向的内存

B

从文件fp中读取长度为n-1的字符串存入指针string指向的内存

C

从文件fp中读取n个字符串存入指针string指向的内存

D

从文件fp中读取长度不超过长度为n-1的字符串存入指针string指向的内存

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读以下函数说明和C语言函数,将应填入(n)处的语句写在对应栏内。

【函数1.1说明】

本程序可以打印出如下图形(菱形):

*

***

*****

*******

*****

***

*

【函数2.1】

main()

{

int i,j,k;

for(i=0;i<=3;i++)

{

for(j=0;j<=2-i;j++)

printf(" ");

for((1))

printf("*");

printf("\n");

}

for(i=0;i<=2;i++)

{

for((2))

printf(" ");

for(k=0;k<=4-2*i;k++)

printf("*");

printf("\n");

}

}

【函数2.2说明】

通过本程序,可以从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“CsaiWgm”中保存,输入的字符串以“!”结束。

【函数2.2】

include "stdio.h"

main()

{

FILE *fp;

char str[100],filename[10];

int i=0;

if((fp=fopen("CsaiWgm","w"))==NULL)

{

printf("cannot open the file\n");

exit(0);

}

printf("please input a string:\n");

gets(str);

while((3))

{

if(str[i]>='a'&&str[i]<='z')

str[i]=(4);

fputc(str[i],fp);

(5);

}

fclose(fp);

fp=fopen("CsaiWgm","r");

fgets(str,stden(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}


正确答案:(1)k=0;k=2*i;k++ (2)j=0;j=i;j++ (3)str[i]!='!' (4)str[i]-32 (5)i++
(1)k=0;k=2*i;k++ (2)j=0;j=i;j++ (3)str[i]!='!' (4)str[i]-32 (5)i++ 解析:本题考查用C语言实现菱形的输出与大小写字母的转换。
在函数2.1中,题目要求实现对菱形的输出,从图中可以看出每行的“*”字符个数为(2×行号-1),最长的一行其长度为8个“*”字符,最短的一行是1个“*”字符,从最短到最长一共是4行。下面来[分析]代码。
第(1)空是第二重循环的循环条件,从程序中可以推断出这个循环的作用是用来输出一行的“*”字符,根据上面的[分析],每行的“*”字符个数为(2×行号-1)可以得到循环的上界,再结合程序可以知道此空用的变量是k,而每行的行号存放在变量i中,因此,此空答案为k=0;k=2*i;k++。
第(2)空在第二个二重循环下面,这个二重循环用来输出图形中下半部分,此空是循环的条件。由于菱形具有对称性,我们可以对照程序上面相应的循环中的条件,很容易就可以得到结果,此空答案为j=0;j=i;j++。
在函数2.2中,题目要求从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件CsaiWgm中保存。此题的关键在于如何将小写字母变成大写字母。
第(3)空是循环的循环条件,从程序中可以推断出这个循环的作用是用来将字符串的小写字母全部转换成大写字母,那么可以知道循环的条件是只要取到的字符不为结束字符“!”,循环就继续,因此,此空答案为str[i]!='!'。
第(4)空是条件判断语句下面的语句,根据程序给出的代码不难发现,如果此条件判断语句结果为真,说明当前取到的字符是小写字母,那么应该将其转换为大写字母,因此,此空答案为str[i]-32。
第(5)空是循环的最后一条语句,从程序中不难发现,循环对字符串的位置没有移动,那么此空应该用来实现对字符串位置的往后移动。而记录当前字符串位置的是变量i,因此,此空答案为i++。

第2题:

标准库函数fgets(s,n,f)的功能是( )

A.从文件f中读取长度为n的字符串存入指针s所指的内存

B.从文件f中读取长度不超过n-1的字符串存入指针s所指的内存

C.从文件f中读取n个字符串存入指针s所指的内存

D.从文件f中读取长度为n-1的字符串存入指针s所指的内存


正确答案:B

第3题:

●试题八

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。

【程序】

#include<stdio.h>

main()

{FILE*fp;

charstr[100];inti=0;

if((fp=fopen("text.txt" (1) ))==NULL)

{printf("can't open this file.\n");exit(0);}

printf("input astring:\n");gest(str);

while(str[i])

{if(str[i]>=′a′ && str[i]<=′z′)

str[i]= (2) ;

fputc(str[i], (3) );

i++;

}

fclose(fp);

fp=fopen("test.txt", (4) );

fgets(str,100,fp);

printf("%s\n",str);

(5) ;

}


正确答案:

●试题八

【答案】(1)W

(2)stri-a+A

(3)fp

(4)r

(5)fclose(fp)

【解析】程序运行后,首先打开文件test.txt用于写入,因此(1)空填w

程序从键盘读入字符串到变量str中,对str中每个字符,如是小写字母,则将其转换成大写字母。(2)空是小写字母转换大写字母的操作。(3)空是将str中的字符写入文件text.txt中。

str中所有字符处理完后,关闭文件test.txt(对应语句是fclose(fp)),然后重新以读方式打开,因此(4)空填r,将test.txt中的内容读到str中并显示输出后,关闭文件test.txt,即(5)空填fclose(fp)

 

第4题:

【程序说明】 程序功能是计算1~10的阶乘。

【程序】

SET TAIK OFF

CLEAR

N=1

DO WHILE N<11

Y=1

(1)

? STR (N,2)+“的阶乘是:”+STR (Y,8)

(2)

ENDDO

SET TAIK ON

RETURN

(3)

PARAMETERS N,Y

IF N>1

DO FP WITH N-1,Y

(4)

ENDIF

RETURN

(1)

A.DO FP WITH N-1,Y

B.DO FP WITH N,Y-1

C.DO FP WITH N,Y

D.DO FP WITH N-1,Y-1


正确答案:C
解析:从整个程序结构上看,主程序中每给N赋一个值,就调用过程求出该N值的阶乘,并通过 Y返回该阶乘的结果,因此第一个填空处应是调用过程语句。从过程中语句“DO FP WITH N-1,Y”可判断出在过程中是通过递归调用(过程在执行中自己调用自己)实现对阶乘的运算,因此推断出过程名为“FP”。程序中第(1)处填空应是“DO FP WITH N,Y”。

第5题:

fgets(str,n,fp)函数从文件中读入一个字符串,以下正确的叙述是 ( )

A.字符串读入后不会自动加入'\0'

B.fp是file类型的指针

C.fgets函数从文件中最多读入n-1个字符

D.fgets函数从文件中最多读入n个字符


正确答案:C

第6题:

函数Rdata()实现从文件IN.dat中读取一篇英文文章存入字符串数组string中,请编写函数SortCharA(),其功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字爷串数组string中。最后调用函数Wdata(),把结果string输出到OUT.dat文件中。

例如,原文:dAe, BfC.

CcbbAA

结果:,. ABCdef

AACbbc

原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。

注意:部分源程序已经给出。请勿改动主函数main()、读数据函数Rdata()和输出数据函数Wdata()的内容。

include <stdio.h>

include <string.h>

include <conio.h>

char string [50] [80];

int maxline = 0; /* 文章的总行数 */

int Rdata (void);

void Wdata (void);

void SortCharA(void)

{

}

void main ()

{ if (Rdata ())

{ printf("数据文件 IN. dat 不能打开! \n\007");

return;

}

SortCharA ();

Wdata ( );

}

int Rdata (void)

{ FILE *fp;

int i = 0;

char *p;

if ((fp = fopen("IN. dat", "r")) == NULL)

return 1;

while (fgets(string[i], 80, fp) != NULL)

{ p = strchr(string[i], '\n');

if (p)

*p = 0;

i++;

}

maxline = i;

fclose (fp);

return 0;

}

void Wdata (void)

{ FILE *fp;

int i;

fp = fopen("OUT. dat", "w");

for (i=0; i<maxline; i++)

{ printf("%s\n", string[i]);

fprintf(fp, "%s\n", string[i]);

}

fclose (fp);

}


正确答案:void SortCharA (void) { int i j k str1; char ch; for (i=0; imaxline; i++) { str1 = strlen(string[i]); for (j=0; jstr1-1; j++) for (k=j+1; kstr1; k++) if (string[i] [j] > string [i] [k]) { ch = string[i] [j]; string[i] [j] = string[i] [k]; string[i] [k] = ch; } } } [解题思路] 这里采用strlen字符函数获取字符串的长度;对文章中的每一行的字符利用双重循环进行两两比较较小的字符往行前放较大的字符往行后放这样就实现了以行为单位对字符从小到大的排序。在程序中的语句是if(string[i][j]>string[i][k])成立string[i][j]和string[i][k]就交换数据。
void SortCharA (void) { int i, j, k, str1; char ch; for (i=0; imaxline; i++) { str1 = strlen(string[i]); for (j=0; jstr1-1; j++) for (k=j+1; kstr1; k++) if (string[i] [j] > string [i] [k]) { ch = string[i] [j]; string[i] [j] = string[i] [k]; string[i] [k] = ch; } } } [解题思路] 这里采用strlen字符函数获取字符串的长度;对文章中的每一行的字符利用双重循环进行两两比较,较小的字符往行前放,较大的字符往行后放,这样就实现了以行为单位对字符从小到大的排序。在程序中的语句是if(string[i][j]>string[i][k])成立,string[i][j]和string[i][k]就交换数据。

第7题:

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。

【说明】

以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。

【程序】

include < stdio. h >

main( )

{ FILE * fp;

char str[100]; int i=0;

if((fp=fopen("text.txt"(1))) ==NULL)

{ printf("can't open this file. \n") ;exit(0) ;}

printf(" input astring: \n" ); gest(str);

while( str[i] )

{ if(str[i] >='a' && str[i] <='z')

str[i]=(2);

fputc(str[i],(3));

i++;

}

fclose(fp);

fp=fopen(" test.txt",(4));

fgets(str, 100, fp);

printf("%s\n" ,str);

(5);

}


正确答案:(1)W (2)str[i]-'a'+'A' (3)fp (4)r (5)fclose(fp)
(1)W (2)str[i]-'a'+'A' (3)fp (4)r (5)fclose(fp) 解析:程序运行后,首先打开文件test.txt用于写入,因此(1)空填w。
程序从键盘读入字符串到变量str中,对str中每个字符,如是小写字母,则将其转换成大写字母。(2)空是小写字母转换大写字母的操作。(3)空是将str中的字符写入文件text.txt中。
str中所有字符处理完后,关闭文件test.txt(对应语句是fclose (fp)),然后重新以读方式打开,因此(4)空填r,将test.txt中的内容读到str中并显示输出后,关闭文件test.txt,即(5)空填fclose(fp)。

第8题:

给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),并写入文件myfile4.txt中,用-1作为字符串输入结束的标志,然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。

[注意] 部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

[试题源程序]

include<stdio.h>

include<string.h>

include<stdlib.h>

void WriteText(FILE *);

void ReadText(FILE *);

main()

{

FILE *fp;

if((fp=fopen("myfile4.txt", "W"))==NULL)

{

printf("open fail !!\n"); exit(0);

}

WriteText(fp);

fclose(fp);

if((fp=fopen("myfile4.txt", "r"))==NULL)

printf("open fail !!1\n"); exit(0);

}

ReadText(fp);

fclose(fp);

}

/*********found*********/

void WriteText(FILE (1) )

{

char str[81];

printf("\nEnter string with -1 to end :\n");

gets(str);

while(strcmp(Str, "-1")!=0){

/**********found*********/

fputs( (2) , fw);

fputs("\n", fw);

gets(str);

}

}

void ReadText(FILE *fr)

{

char str[81];

printf("\nRead file and output to screen :\n");

fgets(str, 81, fr);

while( !feof(fr)){

/**********found**********/

printf("%s", (3) );

fgets(str, 81, fr);

}

}


正确答案:[1] fw [2] str [3] str
[1] fw [2] str [3] str 解析: 填空1:在该函数中,对已有的语句fputs("\n", fw);分析可知:由于文件流变量fw在函数体中没有定义过,故应填*fw或fw[]。
填空2:要把从键盘上输入的内容写入指定的文件中,键盘上输入的内容已存入字符串str变量中,故应填写str。
填空3:要把已存入文件中的内容从文件中读出且已存入字符串变量str中,最后在屏幕上显示出来,故应填写str。

第9题:

若fp是指向某文件的指针,已读到此文件末尾,则库函数feof(fp)的返回值是______。

A.EOF

B.0

C.非零值

D.NULL


正确答案:C
解析:由函数feof的定义得知,如果返回的是0,则表示没有到文件末尾;如果返回为非0,则表示到文件末尾。

第10题:

标准库函数fgets(s,n,file)的功能是( )。

A.从文件file中读取长度为n的字符串存入字符数组s中

B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中

C.从文件file中读取n个字符串存入字符数组s中

D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中


正确答案:B
解析: 字符串输入函数fgets()的调用形式为:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件的文件型指针。
fgets函数的功能:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中;读入字符串后会自动在字符串末尾加入“'\0'”结束符,表示字符串结束。

更多相关问题