这个文件夹 不一定会生成到最终发布目录,这个要看里面的文件是什么性质,是不是内容文件并复制到输出目录。
1 SystemDiagnosticsProcessGetCurrentProcess()MainModuleFileName
获取模块的完整路径。
2 SystemEnvironmentCurrentDirectory
获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
3 SystemIODirectoryGetCurrentDirectory()
获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\>
一、头文件file1h中放了一个函数申明语句。源文件中放了函数。
二、根据头文件的include语句解析字符串获取头文件名,与头文件默认路径(常量)组成文件路径。同字符串的匹配,找到在语句在源文件的位置,并读取头文件内容替换到源文件对应位置。
三、合并后的内容,我是写入新的文件中,如你想要覆盖同文件,自行修改路径常量。
#include <stdioh>
#include <malloch>
#include <stringh>
#define NN "C:\\newFilec"//合并后的文件完整路径
#define HPH "C:\\"//头文件的默认路径
int getFSize(char Path);//获取文件字节数,参数文件路径
char readHFile(char hPath);//获取头文件内容
char checkCFile(char cPath,char hcon);// 检查源文件,找到对应includ语句,替换成对应头文件内容,并保存到新的文件中
int findStr(char str1,char str2);//在str1中查找str2,返回str2在str1中对应的首尾字符下标
int main()
{
char newFile=NULL;
newFile=checkCFile("C:\\file1c","#include\"file1h\"");
if(newFile)
printf("合并成功,合并后的文件内容为(路径:%s):\n%s\n",NN,newFile);
else
printf("合并失败,无匹配内容\n");
free(newFile);
return 0;
}
int getFSize(char Path)
{
int fSize=0;
if(!Path) return 0;
FILE fp=NULL;
fp=fopen(Path,"r");
if(!fp) return 0;
fseek(fp,0,SEEK_END);
fSize=ftell(fp);
fclose(fp);
return fSize;
}
char checkCFile(char cPath,char hcom)
{
int i=0,inx=NULL,fSize=0,hfnLen=0,hPLen=0,len=0;
char fcon=NULL,hcon=NULL,newfcon=NULL,hPath=NULL,pb=hcom,pe=pb,hfn=NULL;
if(!cPath || !hcom) return NULL;
FILE fp=NULL;
fp=fopen(cPath,"rb+");//这里不要要用r,避免下面计算大小误差
if(!fp) return 0;
if(!(fSize=getFSize(cPath))) return NULL;
printf("源文件大小:%d字节\n",fSize);
fcon=(char )malloc(sizeof(char)(fSize+1));
if(!fcon) return 0;
fcon[fSize]=0;
//fseek(fp,0,SEEK_SET);
if(fread(fcon,1,fSize,fp)!=fSize) return NULL;
printf("源文件内容为:\n%s\n",fcon);
if(!(inx=findStr(fcon,hcom))) return NULL;//将找到的匹配内容所在下标保存在inx指向地址
fclose(fp);
//----通过include语句获取头文件文件名---
while(pb!='"')pb++;
pb++,pe=pb;
while(pe!='"')pe++;
hfnLen=pe-pb;
hfn=(char )malloc(sizeof(char)(hfnLen+1));
if(!hfn)return NULL;
hfn[hfnLen]=0;
while(pb<pe)hfn[i++]=pb,pb++;
//----------------------------------------
hPLen=hfnLen+strlen(HPH);
hPath=(char )malloc(sizeof(char)(hPLen+1));
strcpy(hPath,HPH);
strcat(hPath,hfn);
hPath[hPLen]=0;
hcon=readHFile(hPath);//获得头文件对应内容
//----合并两个文件内容到新的数组,释放原数组---
len=fSize-strlen(hcom)+strlen(hcon);
newfcon=(char )malloc(sizeof(char)(len+1));
if(!newfcon) return NULL;
newfcon[0]=0;
fcon[inx[0]]=0;
pb=fcon;
strcpy(newfcon,pb);
pb=hcon;
strcat(newfcon,pb);
pb=&fcon[inx[1]+1];
strcat(newfcon,pb);
newfcon[len]=0;
free(fcon);
free(hcon);
free(hfn);
//----------------------------------------------
//-------------写入新文件-----------------------
fp=fopen(NN,"w");
if(!fp) return NULL;
fwrite(newfcon,1,strlen(newfcon),fp);
fclose(fp);
//---------------------------------------------
return newfcon;
}
char readHFile(char hPath)
{
int fSize=0;
char hcon=NULL;
FILE fp=NULL;
fp=fopen(hPath,"rb+");
if(!fp)return NULL;
if(!(fSize=getFSize(hPath)))return NULL;
printf("头文件大小:%d字节\n",fSize);
hcon=(char )malloc(sizeof(char)(fSize+1));
if(!hcon) return NULL;
hcon[fSize]=0;
if(fread(hcon,1,fSize,fp)!=fSize) return NULL;
printf("头文件内容为:\n%s\n",hcon);
fclose(fp);
return hcon;
}
int findStr(char str1,char str2)
{
char p0=NULL,p1=NULL;
int i,cnt=0,len1,len2;
static int inx[2];//str2首尾字符在str1中的对应下标
if(!str1 || !str2) return NULL;
inx[0]=inx[1]=0;
len1=strlen(str1);
len2=strlen(str2);
for(i=0;i<len1;i++)
{
cnt=0,p0=&str1[i],p1=p0+len2-1;
//每次搜索,先用p0,p1定位str2的在str1中的首尾位置,进行字符对比,再两指针向内收缩比较
if(p0!=str2[cnt] || p1!=str2[len2-1-cnt]) continue;
cnt++,p0++,p1--;
while(p0<=p1)
{
if(p0!=str2[cnt] || p1!=str2[len2-1-cnt]) break;//只要一对字符不匹配,跳过本次对比
cnt++,p0++,p1--;
}
if(p0>p1)//没有跳过说明本次完全匹配,记录首尾位置
{
inx[0]=i,inx[1]=i+len2-1;
return inx;
}
}
return NULL;
}
1、新建一个标准的VB EXE工程,只有一个Form,Form上有两个按钮:Command1和Command2。
2、双击Command1添加如下代码
Private Sub Command1_Click()
Dim strFile As String
Dim intFile As Integer
Dim strData As String
strFile = "c:\学生成绩txt"
intFile = FreeFile
Open strFile For Input As intFile
strData = StrConv(InputB(FileLen(strFile), intFile), vbUnicode)
DebugPrint strData
Close intFile
End Sub
3、按F8开始单步调试代码,点击Command1,进入单步调试功能,
4、多次按下F8或直接按下F5运行完成,就完成了读取文本文件内容并输出到立即窗口。
以上就是关于C# 获取文件夹的绝对路径全部的内容,包括:C# 获取文件夹的绝对路径、一道c语言编程、VB.net窗体设计中,如何读取.txt文件中的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)