hur.cn - 华软网

 热门搜索

我是初学者请问这个怎么解释(strrchr(FilePach,'\\'))[1]=0

  作者:未知    来源:网络    更新时间:2011/6/25
C++">DWORD COPini::ReadString(char *section, char * key,  char stringtoread[],  char * filename)
{
    CHAR FilePath[255]; 
    GetModuleFileName(NULL,FilePath,255); 
    (strrchr(FilePath,'\\'))[1] = 0;  主要是这里有点看不明白(我是初学者)
    strcat(FilePath,filename);
    return ::GetPrivateProfileString(section, key,NULL,stringtoread,255,FilePath);


谁能解答下?
---华软 网友回答---
(strrchr(FilePath,'\\'))[1] = 0;  主要是这里有点看不明白(我是初学者)

---华软网友回复---
百度百科:
strrchr()函数的作用是:查找一个字符串在另一个字符串中末次出现的位置,并返回从字符串中的这个位置起, 一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。

strrchr(FilePath,'\\')[1]=0
(1)返回以'\\'开始到FilePath结束的所有字符
(2)把得到的字符串的第二个元素赋值为0,即截断该字符串,让字符串只包含'\\'
(3)函数有可能返回NULL,有可能错误。
---华软网友回复---
GetModuleFileName函数的作用是返回本程序全路径,如“D:\1.exe”;
(strrchr(FilePath,'\\'))是查找'\\'即斜杆最后一次出现的位置指针,即“D:\1.exe”中斜杆的位置的指针。
(strrchr(FilePath,'\\'))[1]=0;是将斜杆后面的一个字符作为字符串结束符。即此时FilePath变为“D:\”。
最后再加上filname,如“2.exe”,最后FileName变为“D:\2.exe”。
---华软网友回复---
从FilePath的右边开始查找"\"这个字符, 然后把这个字符的下一个字符设为0,即空字符.因为stttchr会返回一个字符指针,它代表FilePath中从"\"开始的字符串.
上面的代码相当于 char * p = strrchr(FilePath,'\\'); p[1] = 0; FilePath中就只剩下路径,而没有文件名了.
---华软网友回复---
引用 4 楼 pzhfei 的回复:
从FilePath的右边开始查找"\"这个字符, 然后把这个字符的下一个字符设为0,即空字符.因为stttchr会返回一个字符指针,它代表FilePath中从"\"开始的字符串.
上面的代码相当于 char * p = strrchr(FilePath,'\\'); p[1] = 0; FilePath中就只剩下路径,而没有文件名了.


char * p = strrchr(FilePath,'\\'); p[1] = 0; 这句解释的相当清楚
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。