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

如题所述

第1个回答  2015-05-31
#include <stdio.h>#include <string.h>void   main(){    int    n;    double x,y,z;/* 如果需要保存每次数据,可以用数组 */        FILE   *fp;        char   filename[100];        char  str[1000];printf("\nEnter a filepath/filename:\n");        gets(filename);    fp=fopen(filename, "rt");        if(fp==NULL)        {              printf("cannot open file\n");              return;        }        while (fgets(str,1000,fp))  //读取一行,并判断文件是否结束        {        sscanf(str,"%d,%lf,%lf,%lf\n",&n,&x,&y,&z);        printf("%d,%e,%e,%e\n",n,x,y,z);      }       fclose(fp);}

第2个回答  2019-10-07
很简单啊。
#include<stdio.h>
char wjm[20];
int main(){
scanf("%s",wjm);
freopen(wjm,"r",stdin);
读入并输出

return 0;

}
第3个回答  2011-11-11
#include <stdio.h>
#include <stdlib.h>

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就是显示在屏幕上

追问

非常谢谢!

追答

没事

第4个回答  推荐于2016-08-22
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这三个可以吗?

本回答被提问者采纳
第5个回答  2011-11-11
先用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);*/
怎么解决?

相似回答