c语言搜索文件函数,c++搜索文件

C语言查找函数

首先,指针默认只有一个地址的长度的空间,存不了那么多的字符。

在当阳等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、网站建设 网站设计制作按需策划,公司网站建设,企业网站建设,品牌网站设计,成都全网营销推广,外贸网站建设,当阳网站建设费用合理。

其次,传值和传地址一塌糊涂,完全就是乱写么。

scanf的第二个参数是地址,如果本身不是指针则需要取址符。

我给你重写了算了

#includestdio.h

int Retrieve(int array[],int length,int x);/*形参x直接传值就可以了*/

int main()

{

int *a,x;

int length,i;

scanf("%d",length);

a = (int)malloc(sizeof(int)*length); /*申请一个内存空间用来存放数据,或者直接用一个大数组也可以*/

怎样使用C语言列出某个目录下的文件?

C语言本身没有提供象dir_list()这样的函数来列出某个目录下所有的文件。不过,利用C语言的几个目录函数,你可以自己编写一个dir_list()函数。

首先,头文件dos.h定义了一个find_t结构,它可以描述DOS下的文件信息,包括文件名、时间、日期、大小和属性。其次,C编译程序库中有_dos_findfirst()和_dos_findnext()这样两个函数,利用它们可以找到某个目录下符合查找要求的第一个或下一个文件。

dos_findfirst()函数有三个参数,第一个参数指明要查找的文件名,例如你可以用“*.*”指明要查找某个目录下的所有文件。第二个参数指明要查找的文件属性,例如你可以指明只查找隐含文件或子目录。第三个参数是指向一个find_t变量的指针,查找到的文件的有关信息将存放到该变量中。

dos_findnext()函数在相应的目录中继续查找由_dos_findfirst()函数的第一个参数指明的文件。_dos_findnext()函数只有一个参数,它同样是指向一个find_t变量的指针,查找到刚文件的有关信息同样将存放到该变量中。

利用上述两个函数和find_t结构,你就可以遍历磁盘上的某个目录,并列出该目录下所有的文件,请看下例:

#include stdio.h

#include direct.h

#include dos.h

#include malloc.h

#include memory.h

#include string.h

typedef struct find_t FILE_BLOCK

void main(void);

void main(void){FILE_BLOCK f-block; /* Define the find_t structure variable * /

int ret_code; / * Define a variable to store the return codes * /

/ * Use the "*.*" file mask and the 0xFF attribute mask to list

all files in the directory, including system files, hidden

files, and subdirectory names. * /

ret_code = _dos_findfirst(" *. * ", 0xFF, f_block);

/* The _dos_findfirst() function returns a 0 when it is successful

and has found a valid filename in the directory. * /

while (ret_code == 0){/* Print the file's name * /

printf(" %-12s

, f_block, name);

/ * Use the -dos_findnext() function to look

C语言文件函数

//要另外说下如fprintf(stderr, "Can't open %s\n", file_app);这是向文件或者系统设备输出的函数;但他的文件指针为stderr;这是c中的标准错误输出设备指针,系统自动分配为显示器故相当于printf("Can't open %s\n", file_app);

#include stdio.h

#include stdlib.h

#include string.h

#define BUFSIZE 1024

#define SLEN 81

void append(FILE *source, FILE *dest);

int main(void)

{

FILE *fa, *fs; //定义2个文件类型指针

int files = 0; // 追加文件个数

char file_app[SLEN];

char file_src[SLEN]; // 2个字符串用来储存文件名;

puts("Enter name of destination file:");//输出Enter name of destination file:

gets(file_app);//输入要追加的文件名

if ((fa = fopen(file_app, "a")) == NULL)//fa指向追加的目的文件,以追加方式打开文件,如果打开失败退出;

{

fprintf(stderr, "Can't open %s\n", file_app);

exit(2);

}

if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败退出

{

fputs("Can't create output buffer\n", stderr);

exit(3);

}

puts("Enter name of first source file (empty line to quit):");//输出Enter name of first source file (empty line to quit):

while (gets(file_src) file_src[0] != '\0')//输入源文件如果是空串结束循环

{

if (strcmp(file_src, file_app) == 0)//如果源和追加文件相同

fputs("Can't append file to itself\n",stderr);

else if ((fs = fopen(file_src, "r")) == NULL)//如果打开源文件失败

fprintf(stderr, "Can't open %s\n", file_src);

else

{

if (setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败开始下次循环

{

fputs("Can't create input buffer\n",stderr);

continue;

}

append(fs, fa);//函数

if (ferror(fs) != 0)//检查文件操作是否有错

fprintf(stderr,"Error in reading file %s.\n",

file_src);

if (ferror(fa) != 0)

fprintf(stderr,"Error in writing file %s.\n",

file_app);

fclose(fs);//关闭源文件

files++;//追加文件数+1

printf("File %s appended.\n", file_src);

puts("Next file (empty line to quit):");

}

}

printf("Done. %d files appended.\n", files);

fclose(fa);//关闭追加文件

return 0;

}

void append(FILE *source, FILE *dest)

{

size_t bytes;

static char temp[BUFSIZE];

while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) 0)//把源文件的内容追加到追加文件,块大小sizeof(char),块数为BUFSIZE

fwrite(temp, sizeof (char), bytes, dest);//写文件块大小sizeof(char),块数为BUFSIZE

}

VC环境中用C语言查找当前路径下的所有文件和文件夹的函数是什么?

这是我的TFTP程序中的一个函数,是搜索当前盘符下的所有文件,包括文件的大小,并发送到客户端,其中就有查找当前路径下的文件,你自己挑一下,应该能完成你的需求。

void FileList(sockaddr_in sour_addr,char strStartDir[])

{

char sendbuffer[1024];

sockaddr_in destaddr;

int sourlen = 0;

int ret = 0;

int len = 0;

int flen = 0;

fd_set fdr;

unsigned short blocknum = 0;

FILE *file;

char filename[128];

strcpy(filename,strStartDir+2); /*获取文件名*/

strcat(filename,"\\*");

destaddr.sin_family = AF_INET;

destaddr.sin_port = sour_addr.sin_port;

destaddr.sin_addr.s_addr = inet_addr(desthost);//

WIN32_FIND_DATA FindFileData;

HANDLE hFind;

hFind = FindFirstFile(filename, FindFileData);

if (hFind == INVALID_HANDLE_VALUE)

{

printf ("Invalid File Handle");

}

else

{

while(FindNextFile(hFind,FindFileData))

{

printf(FindFileData.cFileName);

printf("\r\n");

memset(sendbuffer,'\0',1024);

len = filldata(blocknum++,FindFileData.cFileName,strlen(FindFileData.cFileName),sendbuffer,sizeof(sendbuffer));

ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)destaddr,sizeof(destaddr));

}

len = fillover(blocknum,"Over",4,sendbuffer,sizeof(sendbuffer));

ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)destaddr,sizeof(destaddr));

FindClose(hFind);

return;

}

}

C语言试题 编写一个获取文件路径的函数

#include

stdio.h

main()

{

char

str[80]="d:\\files\\dataFiles\\data\\avatar.bmp";

//

单斜杠处填双斜杠

int

L,i;

L

=

strlen(str);

for

(i=L-1;i=0;i--)

if

(str[i]

==

'\\')

{

str[i]

='\0';

break;};

//

去掉文件名就是路径

printf("Path=

%s",str);

return

0;

}

-----------

写成函数和调用:

#include

stdio.h

void

fun(char

*str){

int

L,i;

L

=

strlen(str);

for

(i=L-1;i=0;i--)

if

(str[i]

==

'\\')

{

str[i]

='\0';

break;};

}

main()

{

char

str[80]="d:\\files\\dataFiles\\data\\avatar.bmp";

fun(str);

printf("Path=

%s",str);

return

0;

}

C语言如何用函数来实现搜索

#include stdio.h

int search(int a[],int b,int c,int i)

{

int x,y,z;

x=i+1;

z=b-1;

y=(x+z)/2;

while(x=z)

{

if(a[y]c)

{

z=y-1;

y=(x+z)/2;

continue;

}

if(a[y]c)

{

x=y+1;

y=(x+z)/2;

continue;

}

return y+1;

}

return -1;

}

int main()

{

int i,m,pos;

scanf("%d",m);

int a[m];

for(i=0;im;i++)

{

scanf("%d",a[i]);

}

for(i=0;im;i++)

{

pos=search(a,m,a[i],i);

if(pos!=-1)

{

printf("FOUND a[%d]=%d, position is %d\n",i,a[i],i+1);

return 0;

}

}

if(pos==-1)

{

printf("NOT FOUND\n");

}

return 0;

}

这种查找方法的数组必须是从小到大的,用遍历的话就没这个问题了。


文章名称:c语言搜索文件函数,c++搜索文件
转载来源:http://myzitong.com/article/dsgssed.html