首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

fgetws读出的资料路径,后面多了一个0A

2013-03-17 
fgetws读出的文件路径,后面多了一个0A fgetws从txt中读出的文件路径,后面多了一个0A,所以一直无法创建文件

fgetws读出的文件路径,后面多了一个0A
 fgetws从txt中读出的文件路径,后面多了一个0A,所以一直无法创建文件。。。
[解决办法]
原因在于你把换行符也读进来了,去掉就好了。
[解决办法]
不要这样改,可以专门写个trim函数来去掉头尾的空白的字符。
参考我的博文(http://blog.csdn.net/turingo/article/details/8314263)。


# /* 从配置行提取文件名 */  
# static char* extract_file_name(const char* line, char* file_name)  
# {  
#     /* 过滤配置行左边的空格符 */  
#     while(isspace(*line++)){};  
#     line--;  
#     /* 忽略空行和注释行 */  
#     if((*line == '\0') 
[解决办法]
 (*line == ';'))  
#         return NULL;  
#   
#     /* 提取文件名,并去掉右边的空格符 */  
#     strcpy(file_name, line);  
#     {  
#         char* p = file_name + strlen(file_name) - 1;  
#         while(isspace(*p--)){};  
#         p++;  
#         p++;  
#         *p = '\0';  
#     }  
#   
#     return file_name;  
# }  


引用:
引用:原因在于你把换行符也读进来了,去掉就好了。
this->Name[lstrlen(this->Name)-1]=0;
这样感觉是不是,不太好啊。。。

[解决办法]
wchar_t ws[256];
...
while (1) {
 if (NULL==fgetws(ws,256,f)) break;
 if (L'\n'==ws[wcslen(ws)-1]) ws[wcslen(ws)-1]=0;
 wprintf(L"[%s]\n",ws);
}

[解决办法]
char * rtrim(char * str)
{
    int n = strlen(str)-1; while (n>0) 
    {
        if ( * (str + n) 1 =' ') 
        {
            * (str+n+1) = '\0' ; 
            break ; 
        }
        else 
            n--;
    }
    return str; 
}

热点排行