C语言修改文件扩展名触发C2440错误,求正确实现方案
问题:修改文件扩展名时遇到编译错误
场景与初始代码
我尝试将文件的扩展名从.xxx修改为.err(xxx为任意值),最初编写的代码如下:
for (size_t i=0; i<strlen(m_sMFLfile); i++) { errorfile[i] = m_sMFLfile[i]; if(m_sMFLfile[i] == '.') { errorfile[i,i+3] = ".err"; break; } }
编译错误信息
编译时触发如下错误:
error C2440: '=': cannot convert from 'const char [5]' to 'char'
其中errorfile的定义为:
char errorfile[256];
自行修正的代码
后来我意识到正确的写法应该是这样:
for (size_t i=0; i<strlen(m_sMFLfile); i++) { errorfile[i] = m_sMFLfile[i]; if(m_sMFLfile[i] == '.') { errorfile[i+1] = 'e'; errorfile[i+2] = 'r'; errorfile[i+3] = 'r'; break; } }
但这种写法在文件名很长(比如1000个字符)的情况下会很麻烦……
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

