永发信息网

c语言中怎么在屏幕上输入文件名然后从此文件中读取内容到屏幕?

答案:5  悬赏:60  手机版
解决时间 2021-11-08 01:19
  • 提问者网友:低吟詩仙的傷
  • 2021-11-07 20:50
c语言中怎么在屏幕上输入文件名然后从此文件中读取内容到屏幕?
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-11-07 21:04
char c[20] = {0};
scanf("%s",c);
fd = open(c,O_RDONLY);
while(1)
{
rc = read(fd,stdout,1);
if (rc <=0)
break;
}
大概是这样追问要求带后缀名的追答你可以自己输入 比如你输入的时候2.txt 或者2.c 都可以 这样自由 最后要关闭文件 close(fd);
char a;
int i;
char c[20] = {0};
scanf("%s",c);
fd = open(c,O_RDONLY);
i = 0;
while(1)
{
rc = read(fd,a,1);
if (rc <=0)
break;
buff【i】 = a;
i++;
}
write(1,buff,strlen(buff));
close(fd);

这样应该差不多了。。。追问,O_RDONLY什么意思?fd是什么?怎么定义?rc又是什么怎么用?追答O_RDONLY以只读形式打开,fd是文件描述符 rc是read的返回值 read出错返回-1,没读到东西返回0, 后面white第一个参数1是代表标准输出你也可以用printf(“%s\n”,buff);追问void Display_yyg(Person per[],int n)
{
char (fd);
FILE *fp;
char a;
int i;
char c[20] = {0};
scanf("%s",&c);
fd = open(c,O_RDONLY);
i = 0;
while(1)
{
rc = read(fd,a,1);
if (rc <=0)
break;
char buff[i] = a;
i++;
}
write(1,buff,strlen(buff));
fclose(fd);

system("pause"); 这样对吗?是不是需要声明啊?追答你把这个函数放在main前面就不需要声明!
void Display_yyg(Person per[],int n)
{
int fd;
char a,buff[1024];
int i;
char c[20] = {0};
scanf("%s",c);//c本来就是地址
fd = open(c,O_RDONLY);
i = 0;
while(1)
{
rc = read(fd,a,1);
if (rc <=0)
break;
char buff[i] = a;
i++;
}
write(1,buff,strlen(buff));
fclose(fd);
}加下头文件应该差不多了追问什么文件头啊?#include
#include
#include这三个可以吗?
全部回答
  • 1楼网友:傲气稳了全场
  • 2021-11-08 00:45
要用到指针?追问恩,似的
  • 2楼网友:孤老序
  • 2021-11-08 00:13
先用SCAN,在用printf追问如FILE *fp;
char filename[20];
scanf("%s",&filename);
freopen( "filename.txt", "r", stdin );

/*if((fp=fopen("filename.txt","r+"))==NULL)
{
printf("\t无法打开此文件\n");
system("pause");
return;
}
printf("----------------------------------------------------------------------\n");
fclose(fp);*/
怎么解决?
  • 3楼网友:何以畏孤独
  • 2021-11-07 22:44
#include #include void   main(){    int    n;    double x,y,z;        FILE   *fp;        char   filename[100];        char  str[1000];printf(" Enter a filepath/filename: ");        gets(filename);    fp=fopen(filename, "rt");        if(fp==NULL)        {              printf("cannot open file ");              return;        }        while (fgets(str,1000,fp))  //读取一行,并判断文件是否结束        {        sscanf(str,"%d,%lf,%lf,%lf ",&n,&x,&y,&z);        printf("%d,%e,%e,%e ",n,x,y,z);      }       fclose(fp);}
  • 4楼网友:白昼之月
  • 2021-11-07 21:28
#include
#include

int main()
{
FILE *fp;
char name[50];
char line[256];

printf("Please input file name:\n");
scanf("%s",name);
if ((fp = fopen(name, "r")) == NULL)
{
printf("Open file %s failed.\n",name);
system("pause");
return 0;
}

while (1)
{
if(fgets(line,256,fp)==NULL) break;
printf("%s",line);
}
fclose(fp);

system("pause");
return 0;
}追问后边的while循环什么意思?追答读文件里面的内容啊

fgets()可以一行行读出来,返回NULL的时候就是到文件尾或异常了,这时候退出循环,结束文件读取。

printf就是显示在屏幕上追问非常谢谢!追答没事
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯