c语言读取文件名问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言读取文件名问题相关的知识,希望对你有一定的参考价值。

有一个文本文件g_name.out,里面存放的是其他数据文件的文件名(如图),每行只有一个文件名,行数不定,如何读取这个g_name.out文件,并根据里面的文件名读取相应的数据文件?谢谢!
g_name.out(存放数据文件名)下

data1_002.txt内容:
请帮忙给出相应的程序语句

  用C语言读取目录中的文件名的方法:

  1、如果是在window环境下,可以用一下方法:

  使用stdlib.h头文件声明的system()函数

  _CRTIMP int __cdecl system (const char*);

  system("dir c:\\\\ /a:h /b > c:\\\\dir.txt");

  调用系统命令dir,把c:目录下文件列表写入文件dir.txt中

  2、使用dirent.h头文件中声明的opendir(),readdir()函数;

int main(int argc, char *argv[])
 
  DIR *directory_pointer; 
    struct dirent *entry; 
   
    if((directory_pointer=opendir("d:\\\\XL"))==NULL) 
        printf( "Error opening \\n "); 
    else 
     
        while((entry=readdir(directory_pointer))!=NULL) 
         
          printf("%s\\n",entry-> d_name);
         
        closedir(directory_pointer); 
       
    

  system("PAUSE");
 return 0;

  3、如果没有dirent.h,可以使用io.h头文件中声明的_findfirst(),_findnext()函数;

  示例代码:

int main(int argc, char *argv[])

  long file;
    struct _finddata_t find;
    
     _chdir("d:\\\\");
     if((file=_findfirst("*.*", &find))==-1L)
  
      printf("空白!\\n");
     exit(0);
     
     printf("%s\\n", find.name);
     while(_findnext(file, &find)==0)
     
          printf("%s\\n", find.name);
     
     _findclose(file);
  
  system("PAUSE");
     return 0;
参考技术A C语言中有两个格式化读写文件的函数,先将文件g_name.out中的内容格式化读取到链表或者数组中,然后遍历链表或者数组,依次取得每个数据文件名,再根据读取到的文件名读取数据文件。 参考技术B #include <stdio.h>
void main()

FILE *fp1,*fp2;
char name[100];
fp1=fopen("g_name.out","r");
while(!feof(fp1))

fgets(fp1,name);
fp2=fopen(name,"r");
以下再读取fp2中的内容。
由于没有编译器,没办法调试,你自己可以根据这个思路写下去。

本回答被提问者采纳

c语言读取文件然后保存到数组中

问题如下:文件d:\\test.txt
里面的数据:
L 23 24 88 99 2
C 10 11 25 4
R 12 14 25 60 3
要求:用C语言编程逐个读取数据,每一行保存到一个数组中,比如第一行s1[0]=L,s1[1]=23,s1[2]=24....第二行s2[0]=C,s[1]=110......然后输出到屏幕,急切期待大家的帮忙,谢谢!
要求出了点问题,第二行s[1]=10 ,提问的时候输错了,意思你们明白的。。。

1,文件里的数据是不同类型的,既有字符类型的,也有整型的。
2,遇到这种情况,可以按照字符串类型定义数组。例如,char s[100][4];
3,编写程序时,一个一个字符读取,遇到空格就完成了一个数据读取。遇到换行,就换到下一行。
这道题目的关键是把数据类型当作字符串类型处理。
你看下面的程序中,把文本的内容都按照整型数来读取,那么当然有问题!数组s的声明是错误的!
参考技术A

c语言读取文件然后保存到数组中的流程是:

    打开文件

    根据文件格式循环读取数据

    将数据存入数据

    重复2-3,直到文件读取完毕

    关闭文件

下面是示例代码:

#include<stdio.h>
int main()

int s[5][8];
int num[]=0,6,5,6;
int i,j;
FILE *fp;
if((fp=fopen("D:\\\\test.txt","r"))==NULL)
puts("No test.txt");return 0;
for(i=1;i<=3;i++)

for(j=1;j<=num[i];j++)
fscanf(fp,"%d",&s[i][j]);

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

for(j=1;j<=num[i];j++)

if(j==1)
printf("%c ",s[i][j]);
else
printf("%d ",s[i][j]);

puts("");

fclose(fp);
return 0;

参考技术B 1.用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。

2.例程:
#include<stdio.h>
#include<string.h>
void main()

char a[100],b[100],c[100];
int i=3,j=4,k=0; //第三行,第四列
FILE *fp = fopen("data.txt","r");
while(fgets(c,100,fp)) //读入每行数据
i--;
if(i==0) strcpy(a,c); //读到第三行数据
b[k++]=c[j-1]; //把每行的那列字符拷到b中

b[k]=0;
printf("第%d行数据:%s\n",i,a);
printf("第%d列数据:%s\n",j,b);
fclose(fp);
参考技术C #include<stdio.h>
int main()

int s[5][8];
int num[]=0,6,5,6;
int i,j;
FILE *fp;
if((fp=fopen("D:\\test.txt","r"))==NULL)
puts("No test.txt");return 0;
for(i=1;i<=3;i++)

for(j=1;j<=num[i];j++)
fscanf(fp,"%d",&s[i][j]);

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

for(j=1;j<=num[i];j++)

if(j==1)
printf("%c ",s[i][j]);
else
printf("%d ",s[i][j]);

puts("");

fclose(fp);
return 0;
追问

输出的数据不是我文本里的数据啊

参考技术D #include<stdlib.h>

void main()

FILE *fin;
int x[10],t;
int i,j;

fin=fopen("test.dat","r");
for (i=0;i<10;i++) fscanf(fin,"%d",&x[i]);
fclose(fin);
for (i=0;i<9;i++)
for (j=i+1;j<10;j++)
if (x[i] > x[j]);
for (i=0;i<10;i++) printf("%d ",x[i]);


假定是整型数,用空白分隔,存在文件 test.dat中。
例如:
22 33 11 5 6 8 10 100
99 71
结果是:
5 6 8 10 11 22 33 71 99 100
另外,团IDC网上有许多产品团购,便宜有口碑

以上是关于c语言读取文件名问题的主要内容,如果未能解决你的问题,请参考以下文章

c语言读取文件然后保存到数组中

C语言如何读取文件?

c语言逐行读取文件?

如下:为啥C语言读取文件中的数据并输出时有乱码出现?本来输入的是数字,然后从文件中读取后就变汉字

C语言 读取文件到内存

C语言将数据写入文件,读取出现二次读取