❶ c语言刚才那里fopen里直接输入文件名路径要\\,为什么这样就可以用一个\
你写在源代码里是"\\",编译之后也是1个\,而且没引号只因为\是转义符号,你写"G:\abc.txt" 那么\a会被看作一个字符,去解释。想在字符串里表示\本身,需要用\把\转义,也就是\\。
❷ c语言去掉绝对路径,提取文件名。
声明一个足够长的名为fn的char型数组,调用库函数strrchr在含路径的全文件名内中找到文件名前的容'\',将其后的文件名拷贝到fn中即可。举例代码如下:123456789101112 //#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"#include "string.h"int main(void){ char fn[30],*p; char pathname[80]="e:\\1\\2\\abc.dat"; //上句假设以某种方式获得的全文件名在pathname中,"…"中只是举例 strcpy(fn,(p=strrchr(pathname,'\\')) ? p+1 : pathname); //上句函数第2实参这样写以防止文件在当前目录下时因p=NULL而出错 printf("%s\n",fn);//打出来看看 return 0;}
❸ c语言读取文件的路径怎么设定
//获取指定目录下的所有文件列表 author:wangchangshaui jlu char** getFileNameArray(const char *path, int* fileCount) { int count = 0; char **fileNameList = NULL; struct dirent* ent = NULL; DIR *pDir; char dir[512]; struct stat statbuf; //打开目录 if ((pDir = opendir(path)) == NULL) { myLog("Cannot open directory:%s\n", path); return NULL; } //读取目录 while ((ent = readdir(pDir)) != NULL) { //统计当前文件夹下有多少文件(不包括文件夹) //得到读取文件的绝对路径名 snprintf(dir, 512, "%s/%s", path, ent->d_name); //得到文件信息 lstat(dir, &statbuf); //判断是目录还是文件 if (!S_ISDIR(statbuf.st_mode)) { count++; } } //while //关闭目录 closedir(pDir); // myLog("共%d个文件\n", count); //开辟字符指针数组,用于下一步的开辟容纳文件名字符串的空间 if ((fileNameList = (char**) myMalloc(sizeof(char*) * count)) == NULL) { myLog("Malloc heap failed!\n"); return NULL; } //打开目录 if ((pDir = opendir(path)) == NULL) { myLog("Cannot open directory:%s\n", path); return NULL; } //读取目录 int i; for (i = 0; (ent = readdir(pDir)) != NULL && i < count;) { if (strlen(ent->d_name) <= 0) { continue; } //得到读取文件的绝对路径名 snprintf(dir, 512, "%s/%s", path, ent->d_name); //得到文件信息 lstat(dir, &statbuf); //判断是目录还是文件 if (!S_ISDIR(statbuf.st_mode)) { if ((fileNameList[i] = (char*) myMalloc(strlen(ent->d_name) + 1)) == NULL) { myLog("Malloc heap failed!\n"); return NULL; } memset(fileNameList[i], 0, strlen(ent->d_name) + 1); strcpy(fileNameList[i], ent->d_name); myLog("第%d个文件:%s\n", i, ent->d_name); i++; } } //for //关闭目录 closedir(pDir); *fileCount = count; return fileNameList
❹ 用C语言如何从路径名中分离文件名
void*GetFilename(char*p){intx=strlen(p);charch='\';char*q=strrchr(p,ch)+1;returnq;}intmain(){charp[]="D:\SoftWare\Adobe\Photoshop5.exe";printf("%s",GetFilename(p));return0;}
charp[]="D:\SoftWare\Adobe\Photoshop5.exe";
中的双斜杠是赋值时用到的,如果路径名是其它方式专获取到,就不需要用到双属斜杠!
❺ C语言获取相对路径的文件名(不带路径) 我获取的是带相对路径的文件名,这里只需要文件夹中的文件名称
ExtractFileName(文件抄完整路径 含文件名)例:procere TForm1.Button1Click(Sender: TObject);begin if OpenDialog1.Execute then begin showmessage(ExtractFileName(OpenDialog1.FileName)); end;end;以上例子为:当点击Button1时,弹出选择文件后,显示所选的文件名称(含扩展名)。
❻ C语言 如何通过文件指针获得文件名
在tc20中,一旦你成功打开一个文件,他将返回一个文件指针。
FILE*fp;
fp=fopen("abc.dat",文件状态(如w,r,r+));
当上面的操作成功后文件指针fp就会赋予你打开文件的最基本信息!
FILE结构在TurboC在stdio.h文件中有以下的文件类型声明:
typedefstruct
{
shortlevel;/*缓冲区“满”或“空”的程度*/
unsignedflags;/*文件状态标志*/
charfd;/*文件描述符(句柄)*/
unsignedcharhold;/*如无缓冲区不读取字符*/
shortbsize;/*缓冲区的大小*/
unsignedchar*buffer;/*数据缓冲区的位置*/
unsignedar*curp;/*指针,当前的指向*/
unsignedistemp;/*临时文件,指示器*/
shorttoken;/*用于有效性检查*/
}FILE;
为管理你打开的文件,操作系统为所有的文件创建一个打开文件信息的结构数组—文件控制块(FCB),而文件描述符就承担了访问与之对应的文件控制块的使命,他在c中就充当文件句柄。每一个文件都需要唯一的一个标识,这样才能管理若干个文件
FCB他存贮这你所有打开文件的信息,而只有通过文件句柄才能访问与之对应的FCB,从而访问你的文件.
文件句柄,就是FCB结构数组的下标
所以,通过文件指针获得文件名的操作路线:
FILE*fp;
charfd=fp->fd;
FCB*fcb;
char*filiname=fcb[fd].filiname
利用FCB(文件控制块)操作的例子见:
http://www.asme.net/blog/user/postcontent.jsp?neighborId=8747&kindLevel=1&kindId=24655&postId=40710&readSg=1
❼ C语言创建文件路径与名称
#include<stdio.h>#include<io.h>voidmain(){inth;charfilename[20];/*定义字符数组存储文件名*/LOOP:printf("pleaseinputfilename:");scanf("%s",&filename);/*输入文件名及路径*/if(h=creat(filename,0)==-1){printf("Error!Cannotvreat!");/*错误提示*/gotoLOOP;/*跳到LOOP处*/}else{printf("thisfilehascreated!");/*成功提示*/close(h);}}
❽ 如何用c语言获得一个目录下所有文件的文件名
void enum_path(char *cpath){ WIN32_FIND_DATA wfd; HANDLE hfd; char cdir[MAX_PATH]; char subdir[MAX_PATH]; int r; GetCurrentDirectory(MAX_PATH,cdir); SetCurrentDirectory(cpath); hfd = FindFirstFile("*.*",&wfd); if(hfd!=INVALID_HANDLE_VALUE) { do{ if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(wfd.cFileName[0] != '.') { // 合成完整路径名 sprintf(subdir,"%s\\%s",cpath,wfd.cFileName); // 递归枚举子目录 enum_path(subdir); } }else{ printf("%s\\%s\n",cpath,wfd.cFileName); // 病毒可根据后缀名判断是 // 否要感染相应的文件 } }while(r=FindNextFile(hfd,&wfd),r!=0); } SetCurrentDirectory(cdir); }
❾ C语言中定义的__FILE__使用,如何只出现该文件名,而不显示路径
可以用宏定义来实现去除文件名中的路径名。
因为windows和linux下,文件名中的路径分隔符号不同,windows中是"/",而linux中是"/",所以,采用的宏不同:
#include<string.h>//strrchr()函数所需头文件windows:#definefilename(x)strrchr(x,'\')?strrchr(x,'\')+1:xlinux:#definefilename(x)strrchr(x,'/')?strrchr(x,'/')+1:x调用:printf("filename:%s",filename(__FILE__));
相关函数说明:
函数原型:char *strrchr(const char *s, int c);
函数功能:The strrchr() function returns a pointer to the last occurrence of the character 【c】 in the string 【s】.函数返回一个指向最后一次出现在字符串s中的字符c的位置指针,如果c不在s中,返回NULL。
PS:linux中提供了相应的函数:basename(s),用来获取不带路径的文件名。
❿ C++怎么从文件的路径中去掉文件的文件名
用字符数组保存字符串 先定位字符串 到字符串 结束标志 '\0' 前的 最后一个字符然后 循环从后向前找 '\\' 一旦找到下标为k的位置是'\\' 就break跳出循环然后 下标k的位置 写入 结束标志 '\0'
未经允许不得转载:山九号 » c文件路径文件名|如何用c语言获得一个目录下所有文件的文件名