十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include stdio.h
成都创新互联是专业的文峰网站建设公司,文峰接单;提供网站建设、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行文峰网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
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;
}
可以运行后指定要打开的文件,成功运行
如我D盘下有f1.txt,没有f3.txt
两次运行结果分别是
一:
请输入要打开的文件名(含路径):
d:\f1.txt
成功打开文件d:\f1.txt!
Press any key to continue
二:
请输入要打开的文件名(含路径):
d:\f3.txt
打开文件失败!
Press any key to continue
程序如下:
#include stdio.h
#include malloc.h
#define MAXSIZE 50
void main()
{
char* file=(char*)malloc(sizeof(char)*MAXSIZE);
printf("请输入要打开的文件名(含路径):\n");
gets(file);
FILE* fp;
if(!(fp=fopen(file,"r")))
{
puts("打开文件失败!\n");
}
else
{
printf("成功打开文件%s!\n",file);
fclose(fp);
}
free(file);
}
这是我的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;
}
}